取消严格模式
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();
}