1、在 Android 8.0 中未知应用安装权限的开关默认是被关闭的 ,需要用户手动打开允许
【未知来源应用权限】才能够安装
// 在清单文件中增加请求安装权限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
// 此方法只有 targetSdkVersion 大于或等于26时 才有效,否则返回的结果一直会为 false
boolean haveInstallPermission = getPackageManager().canRequestPackageInstalls();
// 如果 haveInstallPermission 为 true, 应用已经获取安装未知来源应用的权限,你可直接执行安装应用的相应逻辑。
// 如果 haveInstallPermission 为 false,应用没有获取安装未知来源应用的权限,则无法安装应用。由于这个安装权限并不是运行时权限,所以无法再代码中请求权限,只能弹一个提示 ,告知用户需要安装权限,确认后 跳转到设置界面中去打开权限。
// 注意这个是8.0新API需要判断
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
Uri packageURI = Uri.parse("package:" + Context.getPackageName());
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI);
startActivityForResult(intent, REQUEST_CODE_INSTALL_PERMISSION);
}