Android8.0之前
未知应用安装权限默认开启,如下图所示

%title插图%num

Android8.0之后
未知应用安装权限默认关闭,且权限入口隐藏。

如何开启未知应用安装权限的入口,并设置允许安装?
1.在清单文件中添加权限

<uses-permission android:name=”android.permission.REQUEST_INSTALL_PACKAGES”/>

2.判断当前是否为8.0以上系统(在这之前也可以对7.0系统进行判断,这里代码没有贴出)

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
boolean hasInstallPermission = isHasInstallPermissionWithO(context);
if (!hasInstallPermission) {
startInstallPermissionSettingActivity(context);
return;
}
}

3.如果为8.0以上系统,则判断是否有未知应用安装权限

@RequiresApi (api = Build.VERSION_CODES.O)
private boolean isHasInstallPermissionWithO(Context context){
if (context == null){
return false;
}
return context.getPackageManager().canRequestPackageInstalls();
}

4.如果没有未知应用安装权限,则需要手动开启

/**
* 开启设置安装未知来源应用权限界面
* @param context
*/
@RequiresApi (api = Build.VERSION_CODES.O)
private void startInstallPermissionSettingActivity(Context context) {
if (context == null){
return;
}
Intent intent = new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
((Activity)context).startActivityForResult(intent,REQUEST_CODE_APP_INSTALL);
}

5.Activity回调(这一步根据需求来确定),下面代码是kotlin写的

override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data)
if (resultCode== Activity.RESULT_OK ){
when(requestCode){
REQUEST_CODE_APP_INSTALL -> {
onSettingCheckUpdate()
}
}
}
}