Unity 調用安卓內部安裝apk

一、申請權限

應用內安裝其他應用的權限屬於特殊權限,需要在特殊申請。

 Uri packageURI = Uri.parse("package:" + mContext.getPackageName());
  Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI);
  startActivityForResult(intent, 401);

二、權限設置回調

特殊權限會跳入到設置界面然後設置,因此需要在Activity中進行回調監聽

 @Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {
        super.onActivityResult(requestCode, resultCode, data);
        if(requestCode == 401 && resultCode == RESULT_OK){
            install();
        }
        finish();
    }

三、程序包安裝

Unity的StreamingAssets對於外部程序是不能通過路徑讀取的,因此把需要安裝的程序放在StreamingAssets文件夾後,在申請安裝的時候需要將文件讀寫到sd卡的apk文件夾中。我用Unity本身讀取字節,然後再寫入到文件夾中會報錯UnauthorizedAccessException,還沒有找到問題原因。讀取寫入權限需要在xml中寫好

四、androidx.core.content.FileProvider這個庫文件

androidx是google更新的類庫,Unity直接打包不行,因此java中使用這種最新方式調用的會報錯。解決方法主要是要添加類庫

修改gradle.properties文件參考 https://forum.unity.com/threads/gradle-build-error-gradle-version-2-10-is-required-current-version-is-4-0-1.499520/#post-4734422中一個Editor腳本。然後在gradle文件中添加上

allprojects {
    repositories {
        flatDir {
            google()
            jcenter()
            dirs 'libs'
        }
    }
}
dependencies {
    implementation fileTree(dir: 'libs', include: ['*.jar'])
    implementation 'androidx.appcompat:appcompat:1.1.0'
**DEPS**}

五、Unity啓動Activity

啓動方式就是普通啓動Activity的方式,啓動和用戶安裝選擇完,需要自動關閉Activity界面,從而回到Unity界面。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章