美文网首页Android开发经验谈Android开发Android技术知识
适配Android8.0无法弹出覆盖安装界面

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

作者: haegyeong | 来源:发表于2018-07-09 10:58 被阅读111次

    记录一下做版本更新时候无法弹出覆盖安装界面,测试用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系统上完美的运行了,比较少写文章,表述可能不太好,如有疑问可私聊。喜欢的点个赞。

    相关文章

      网友评论

        本文标题:适配Android8.0无法弹出覆盖安装界面

        本文链接:https://www.haomeiwen.com/subject/khdzuftx.html