Android 8.0不能自动安装APK问题的解决方法(完美适配)
Android8.0之前
未知应用安装权限默认开启,如下图所示

8.0以下手机未知应用安装权限.png
Android8.0之后
未知应用安装权限默认关闭,且权限入口隐藏。
如何开启未知应用安装权限的入口,并设置允许安装?
在清单文件中添加权限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>
判断当前是否为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()
}
}
}
}
总结
以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对脚本之家的支持。
相关文章
Android中使用TextView实现高仿京东淘宝各种倒计时效果
今天给大家带来的是仅仅使用一个TextView实现一个高仿京东、淘宝、唯品会等各种电商APP的活动倒计时。今天小编把实现代码分享到脚本之家平台,对android textclock 倒计时效果感兴趣的朋友参考下吧2016-10-10
android:descendantFocusability方法介绍
开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点2012-11-11
Android中SharedPreference详解及简单实例
这篇文章主要介绍了 Android中SharedPreference详解及简单实例的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下2017-09-09


最新评论