2017-07-12 3 views
1

thisのコードが一致してapkをインストールできますが、Uri.fromfileはサポートされなくなり、FileProvider.getUriForFileが使用されるはずです。ただ、UnityでUri.fromfileをFileProvider.getUriForFileに変換する方法ですか?

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

authorityパラメータで

AndroidJavaObject fileObj = new AndroidJavaObject("java.io.File", apkPath); 
AndroidJavaClass uriObj = new AndroidJavaClass("android.net.Uri"); 
AndroidJavaObject uri = uriObj.CallStatic<AndroidJavaObject>("fromFile", fileObj); 

を交換https://inthecheesefactory.com/blog/how-to-share-access-to-file-with-fileprovider-on-android-nougat/en

 AndroidJavaClass intentObj = new 
     AndroidJavaClass("android.content.Intent"); 
     string ACTION_VIEW = intentObj.GetStatic<string>("ACTION_VIEW"); 
     int FLAG_ACTIVITY_NEW_TASK = intentObj.GetStatic<int> 
     ("FLAG_ACTIVITY_NEW_TASK"); 
     AndroidJavaObject intent = new 
     AndroidJavaObject("android.content.Intent", ACTION_VIEW); 

     AndroidJavaObject fileObj = new AndroidJavaObject("java.io.File", 
     apkPath); 
     AndroidJavaClass uriObj = new AndroidJavaClass("android.net.Uri"); 
     AndroidJavaObject uri = uriObj.CallStatic<AndroidJavaObject> 
     ("fromFile", fileObj); 

     intent.Call<AndroidJavaObject>("setDataAndType", uri, 
     "application/vnd.android.package-archive"); 
     intent.Call<AndroidJavaObject>("addFlags", FLAG_ACTIVITY_NEW_TASK); 
     intent.Call<AndroidJavaObject>("setClassName", 
     "com.android.packageinstaller", 
     "com.android.packageinstaller.PackageInstallerActivity"); 

     AndroidJavaClass unityPlayer = new 
     AndroidJavaClass("com.unity3d.player.UnityPlayer"); 
     AndroidJavaObject currentActivity = 
     unityPlayer.GetStatic<AndroidJavaObject>("currentActivity"); 
     currentActivity.Call("startActivity", intent); 

答えて

1

-

私はアンドロイドのスタジオでプロジェクトを開くしようとしたマニフェストファイルを操作するには、このチュートリアルに従っで構築されます:

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

その後currentActivity.Call関数を呼び出す前に、目的にFLAG_GRANT_READ_URI_PERMISSION許可を追加します。

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

完全なスクリプトについては、今編集したHow to install Android apk from unity applicationの質問を参照してください。

関連する問題