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

 更新时间:2018年07月25日 17:00:13   作者:会撒娇的犀犀利  
这篇文章主要给大家介绍了关于Android 8.0不能自动安装APK问题的解决方法(完美适配),这里的自动安装是指下载完成后,自动弹出安装界面,而不是静默安装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()
    }
   }
  }
 }

总结

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

相关文章

  • OpenGL Shader实例分析(8)彩色光圈效果

    OpenGL Shader实例分析(8)彩色光圈效果

    这篇文章主要为大家详细介绍了OpenGL Shader实例分析第8篇,彩色光圈效果,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-02-02
  • Android获取手机配置信息具体实现代码

    Android获取手机配置信息具体实现代码

    下面为大家介绍下使用android获取手机配置信息的具体过程,感兴趣的朋友可以参考下哈,希望对你有所帮助
    2013-06-06
  • Android自定义ProgressDialog加载图片

    Android自定义ProgressDialog加载图片

    这篇文章主要介绍了Android自定义ProgressDialog系统加载框,通过本文大家可以尝试利用Android自定义ProgressDialog,感兴趣的小伙伴们可以参考一下
    2016-05-05
  • Android中使用TextView实现高仿京东淘宝各种倒计时效果

    Android中使用TextView实现高仿京东淘宝各种倒计时效果

    今天给大家带来的是仅仅使用一个TextView实现一个高仿京东、淘宝、唯品会等各种电商APP的活动倒计时。今天小编把实现代码分享到脚本之家平台,对android textclock 倒计时效果感兴趣的朋友参考下吧
    2016-10-10
  • Android 三级NestedScroll嵌套滚动实践

    Android 三级NestedScroll嵌套滚动实践

    这篇文章主要介绍了Android 三级NestedScroll嵌套滚动实践,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-02-02
  • Android中三种注入事件方法比较

    Android中三种注入事件方法比较

    这篇文章主要介绍了Android中三种注入事件方法比较,本文分别讲解了使用内部APIs、使用instrumentation对象、直接注入事件到设备/dev/input/eventX等3种方法,需要的朋友可以参考下
    2015-02-02
  • android:descendantFocusability方法介绍

    android:descendantFocusability方法介绍

    开发中很常见的一个问题,项目中的listview不仅仅是简单的文字,常常需要自己定义listview,问题就出现了,可能会发生点击每一个item的时候没有反应,无法获取的焦点
    2012-11-11
  • 详解Android封装一个全局的BaseActivity

    详解Android封装一个全局的BaseActivity

    这篇文章主要介绍了详解Android封装一个全局的BaseActivity,对封装感兴趣的同学,可以参考下
    2021-04-04
  • Android中SharedPreference详解及简单实例

    Android中SharedPreference详解及简单实例

    这篇文章主要介绍了 Android中SharedPreference详解及简单实例的相关资料,希望通过本文能帮助到大家,需要的朋友可以参考下
    2017-09-09
  • android TabHost(选项卡)的使用方法

    android TabHost(选项卡)的使用方法

    Android中的选项卡是用TabHost实现的,下面我们用一个例子说明他的使用方法
    2013-11-11

最新评论