安卓8.0应用内更新升级遇到的问题,你需要收藏了
Posted android与kotlin以及java架构
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了安卓8.0应用内更新升级遇到的问题,你需要收藏了相关的知识,希望对你有一定的参考价值。
前一段时间写了关于8.0的一篇文章,讲述的主要是8.0的通知栏的适配问题,最近在项目开发的时候又遇到了另外一种情况。
现在基本上每个安卓应用都有在线更新功能,应该很多人都知道7.0添加了文件夹限制访问的权限,主要就是拍照还有文件安装问题需要开发者去设置FileProvider 共享文件这里就不多讲了 ,今天主要讲的就是8.0的一些权限问题
以前安装未知来源应用的时候一般会弹出一个弹窗让用户去设置允许还是拒绝,并且设置为允许之后,所有的未知来源的应用都可以被安装。
android8.0的变化是,未知应用安装权限的开关被除掉,取而代之的是未知来源应用的管理列表,需要在里面打开每个应用的未知来源的安装权限。Google这么做是为了防止一开始正经的应用后来开始通过升级来做一些不合法的事情,侵犯用户权益。
当你的应用直接适配到Android8之后,内部启动应用安装是会被阻塞的,如果不处理好这个未知来源的权限,会导致应用根本无法更新,只能去应用市场重新下载。
那么如何来适配8.0这一个新变化呢?
首先第一点需要做的就是打开这个开关 在清单文件里面添加权限
<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />
第二点就是在安装应用的时候先做判断是否已经授权
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
if(getPackageManager().canRequestPackageInstalls()){
//已经同意权限在这里执行安装应用的代码
}else{
//没有允许 需要去申请权限,由于这个权限不是运行时权限,所有需要用户手
//动去开启权限,可以给用户一个弹窗 提示用户去权限列表开启权限 开启设
//置的代码 8.0新的API
Intent intent =new Intent(Settings.ACTION_MANAGE_UNKNOWN_APP_SOURCES);
startActivityForResult(intent, 1);
}
}
然后在onActivityResult里面接受回调
if (resultCode == RESULT_OK && requestCode == 1) {
//再次执行上面的流程,包含权限判等 }
经过以上的操作就能很好的解决掉8.0应用安装会出现的问题了
以上是关于安卓8.0应用内更新升级遇到的问题,你需要收藏了的主要内容,如果未能解决你的问题,请参考以下文章