首页 > 系统 > Android > 正文

Android 8.0不能自动安装APK问题的解决方法(完美适配)

2019-10-21 21:45:33
字体:
来源:转载
供稿:网友

Android8.0之前

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

Android,安装,APK
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()    }   }  } }

总结

以上就是这篇文章的全部内容了,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对VEVB武林网的支持。


注:相关教程知识阅读请移步到Android开发频道。
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表