取消严格模式 oncreate()加入以下代码
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.setVmPolicy(builder.build()); }获取未知应用来源应用安装权限
@SuppressLint("CheckResult") private void checkOreo(){ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {//8.0 //判断是否可以直接安装 boolean canInstall = getPackageManager().canRequestPackageInstalls(); if (canInstall) { //安装下载好的应用 installAPK(); } else { //请求安装未知应用来源的权限 Uri packageURI = Uri.parse("package:" + getPackageName()); Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI); startActivityForResult(intent, GET_UNKNOWN_APP_SOURCES); } } else { //安装apk installAPK(); } }apk安装
private void installAPK() { if (!apkFile.exists()) { return; } Intent intent = new Intent(Intent.ACTION_VIEW); // 安装完成后,启动app(源码中少了这句话) intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); Uri uri = Uri.parse("file://" + apkFile.toString()); intent.setDataAndType(uri, "application/vnd.android.package-archive"); startActivity(intent); finish(); }