1. 程式人生 > >Android 利用FileProvider安裝apk一定要宣告許可權,避免當成未知應用被阻止安裝

Android 利用FileProvider安裝apk一定要宣告許可權,避免當成未知應用被阻止安裝

首先看看我們利用FileProvider來安裝apk的常規操作

/**
 * 通過隱式意圖呼叫系統安裝程式安裝APK
 */
public void install(Context context,File file) {

    Intent intent = new Intent(Intent.ACTION_VIEW);
    // 由於沒有在Activity環境下啟動Activity,設定下面的標籤
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
     //判讀版本是否在7.0以上
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { 
        //引數1 上下文, 引數2 Provider主機地址 和配置檔案中保持一致   引數3  共享的檔案
        Uri apkUri =
                FileProvider.getUriForFile(context, "com.xxx.xxx.fileprovider", file);
        //新增這一句表示對目標應用臨時授權該Uri所代表的檔案
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        intent.addFlags(Intent.FLAG_GRANT_WRITE_URI_PERMISSION);
        intent.setDataAndType(apkUri, "application/vnd.android.package-archive");
    } else {
        intent.setDataAndType(Uri.fromFile(file),
                "application/vnd.android.package-archive");
    }
    context.startActivity(intent);
  }


這些常規操作大家都應該知道,但是隻有這些是不夠的,有時候並能在正常安裝,重要的是記得宣告許可權,避免被當成未知應用被阻止安裝了~~~

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />