Android8.0 允许安装未知来源权限
适配步骤
步骤一.在AndroidManifest.xml中增加请求安装的权限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
步骤二.判断是否已经打开了该权限,代码如下
private void checkPermission() {
boolean haveInstallPermission;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//先获取是否有安装未知来源应用的权限
haveInstallPermission = getPackageManager().canRequestPackageInstalls();
if (!haveInstallPermission) {//没有权限
AlertDialog alertDialog = new AlertDialog.Builder(this)
.setTitle("请开启未知来源权限")
.setMessage("应用需要打开安装未知来源应用权限,请去设置中开启权限")
.setCancelable(false)
.setNegativeButton("取消", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
ToastUtil.showToast(MainActivity.this,"您拒绝了权限,应用无法正常使用!");
finish();
}
})
.setPositiveButton("去设置", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
dialog.dismiss();
toInStallPermissionSettingActivity();
}
}).create();
alertDialog.show();
return;
}
}
//有权限,进行其他操作
}
protected static final int REQUEST_CODE_INSTALL_PERMISSION = 2;
private void toInStallPermissionSettingActivity() {
Uri packageURI = Uri.parse("package:" + getPackageName());
//注意这个是8.0新API
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES, packageURI);
startActivityForResult(intent, REQUEST_CODE_INSTALL_PERMISSION);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK && requestCode == REQUEST_CODE_INSTALL_PERMISSION){
checkInstall();//以防万一,再次检查权限
}
}