Android8.0之前

未知应用安装权限默认开启,如下图所示

ca88fcbbf6c5

8.0以下手机未知应用安装权限.png

Android8.0之后

未知应用安装权限默认关闭,且权限入口隐藏。

如何开启未知应用安装权限的入口,并设置允许安装?

在清单文件中添加权限

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

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {

boolean hasInstallPermission = isHasInstallPermissionWithO(context);

if (!hasInstallPermission) {

startInstallPermissionSettingActivity(context);

return;

}

}

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

@RequiresApi (api = Build.VERSION_CODES.O)

private boolean isHasInstallPermissionWithO(Context context){

if (context == null){

return false;

}

return context.getPackageManager().canRequestPackageInstalls();

}

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

/**

* 开启设置安装未知来源应用权限界面

* @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);

}

Activity回调(这一步根据需求来确定)

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()

}

}

}

}

最后,希望此篇博客对大家有所帮助,欢迎提出问题及建议共同探讨,如有兴趣可以关注我的博客,谢谢!

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐