SocialConnectorでは以下のようにuri.fromFileでファイル共有を行います。

var uri = new AndroidJavaClass ("android.net.Uri");
var file = new AndroidJavaObject ("java.io.File", textureUrl);
intent.Call<AndroidJavaObject> ("putExtra", "android.intent.extra.STREAM", uri.CallStatic<AndroidJavaObject> ("fromFile", file));


しかし、Android7から権限管理が強化されたため、画像共有時にAndroidJavaException: android.os.FileUriExposedExceptionが発生します。この問題を解決するには、FileProviderを使用する必要があります。

int FLAG_GRANT_READ_URI_PERMISSION = intent.GetStatic<int>("FLAG_GRANT_READ_URI_PERMISSION");
intent.Call<AndroidJavaObject>("addFlags", FLAG_GRANT_READ_URI_PERMISSION);

AndroidJavaClass unityPlayer = new AndroidJavaClass("com.unity3d.player.UnityPlayer");
AndroidJavaObject currentActivity = unityPlayer.GetStatic<AndroidJavaObject>("currentActivity");
AndroidJavaObject unityContext = currentActivity.Call<AndroidJavaObject>("getApplicationContext");

string packageName = unityContext.Call<string>("getPackageName");
string authority = packageName + ".fileprovider";

AndroidJavaObject fileObj = new AndroidJavaObject("java.io.File", textureUrl);
AndroidJavaClass fileProvider = new AndroidJavaClass("android.support.v4.content.FileProvider");
AndroidJavaObject uri = fileProvider.CallStatic<AndroidJavaObject>("getUriForFile", unityContext, authority, fileObj);

intent.Call<AndroidJavaObject>("putExtra", "android.intent.extra.STREAM", uri);


AndroidManifestに権限を追加します。

 <!-- Add fileprovider for android n -->
<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="バンドルID.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths"></meta-data>
</provider>


Plugins/Android/res/xmlにfile_paths.xmlを作成し、以下のように共有フォルダ指定をします。

<?xml version="1.0" encoding="utf-8"?>
<paths>
      <external-cache-path name="external_files" path="."/>
      <external-path name="external_files" path="."/>
</paths>


しかし、UnityとAndroid SDK 26以降を合わせて使うと、Plugins/Android/resフォルダが存在するとREAD_PHONE_STATEパーミッションが追加されます。(READ_PHONE_STATE permission added when using SDK tools 26.0.2)Unity5.5.4f1からUnity5.5.5p2に上げても回避はできませんでした。

尚、ビルド済みのapkからManifestを抽出するにはapktoolを使用します。

apktool d input.apk