1. 程式人生 > >Android 相容8.0 系統 安裝apk 未知包

Android 相容8.0 系統 安裝apk 未知包

隨著系統升級,相容不同的系統必備

自動更新後安裝

註冊許可權

<!-- 請求安裝許可權 8.0 -->
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

7.0 私有許可權問題

8.0 允許安裝未知應用


boolean isGranted(String permission) {
   // 8.0 許可權 安裝apk 許可權
   if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
       return
getActivity().getPackageManager().canRequestPackageInstalls(); } return true; } //許可權不存在,申請許可權,並跳到當前包 if(!isGranted()){ Uri packageURI = Uri.parse("package:" + getContext().getPackageName()); Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI); startActivityForResult(intent, 100001
); } @Override public void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data); if (requestCode == 100001) { if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) { // 同意以後 進行安裝 } } } /** * 安裝apk */ public
static void installApk(Activity activity, File apkFile){ Intent intent = new Intent(Intent.ACTION_VIEW); if (Build.VERSION.SDK_INT < Build.VERSION_CODES.N) { intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive"); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); } else { // 宣告需要的臨時許可權 intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION); // 第二個引數,即第一步中配置的authorities String packageName = activity.getApplication().getPackageName(); Uri contentUri = FileProvider.getUriForFile(activity, packageName + ".fileProvider", apkFile); intent.setDataAndType(contentUri, "application/vnd.android.package-archive"); } activity.startActivity(intent); }