扣丁学堂Android开发版本8.0不能自动安装APK问题解决方法

2018-07-26 14:40:20 707浏览

今天扣丁学堂Android培训主要给大家介绍了关于Android8.0不能自动安装APK问题的解决方法(完美适配),这里的自动安装是指下载完成后,自动弹出安装界面,而不是静默安装APK,下面我们一起来看一下吧。



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开发技术的相关资讯>>

标签: Android学习路线图 Android培训 Android开发工程师 Android视频教程

热门专区

暂无热门资讯

课程推荐

微信
微博
15311698296

全国免费咨询热线

邮箱:codingke@1000phone.com

官方群:148715490

北京千锋互联科技有限公司版权所有   北京市海淀区宝盛北里西区28号中关村智诚科创大厦4层
京ICP备12003911号-6   Copyright © 2013 - 2019

京公网安备 11010802030908号