适配Android8.0无法弹出覆盖安装界面

记录一下做版本更新时候无法弹出覆盖安装界面,测试用Android8.0以下的系统是可以覆盖安装成功的,所以证明6.0的动态权限和7.0的文件读取权限是没问题的,后来google一下,发现8.0添加了新的安全措施,不允许应用内安装未经过Google play验证的应用,所以我们又得针对8.0系统做适配。

  • 在清单文件中添加如下权限:
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES"/> 
  • 判断是否已经获取到允许安装未知应用
    在8.0中的PackageManager类中多了 canRequestPackageInstalls() 这个方法来检查是否已经获取到允许安装未知应用,所以我们在代码中只需要通过调用packageManager.canRequestPackageInstalls()返回的boolean值来判断是否能进行下一步安装,伪代码如下:
        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
            boolean canInstall = getPackageManager().canRequestPackageInstalls();
            if (canInstall) {
               installApk();
            } else {
                //请求安装未知应用来源的权限
                ActivityCompat.requestPermissions(this, new String[]{Manifest.permission.REQUEST_INSTALL_PACKAGES}, 0);
            }
        } else {
            installApk();
        }
  • 引导用户跳转到 安装未知应用 界面
    如果用户是首次更新,则canRequestPackageInstalls()默认返回false,所以我们要引导用户跳转到 安装未知应用 界面
startActivity(Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES))

进过如上步骤,那么版本更新就可以在8.0系统上完美的运行了。



作者:haegyeong
链接:https://www.jianshu.com/p/c48e391d3054
来源:简书
简书著作权归作者所有,任何形式的转载都请联系作者获得授权并注明出处。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值