Android studio 内部更新 兼容高版本(10以上也可以 --- 新手向)

前言:本人小白,刚入职。处理一个线上的项目,客户反应有一些人安装完新版本后会闪退,有一些人正常,我们这边统计发现android版本高于7的人会出现这种情况。

处理流程:
1.拉下代码进行测试发现,会报file:xxxxx的错误

2.要使用FileProvider,在manifrest.xml中添加(直接复制就可以):

       `<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="${applicationId}.fileProvider"
            android:exported="false"
            android:grantUriPermissions="true">
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/provider_paths"/>
        </provider>`
    然后在这个文件里面添加一个权限:`
    <!--   android 7以上需要更新的权限 -->
    <uses-permission
    android:name="android.permission.REQUEST_INSTALL_PACKAGES"/>`
    <!--  ps:一定要注意位置,如果报红就是你的位置不对直接放在文件最上面的位置,这里是我踩的坑  -->

3.在app里的res目录下新建一个xml包和一个xml文件,并添加:

`<paths  xmlns:android="http://schemas.android.com/apk/res/android">
        <root-path name="root_path" path="." />
        <external-path name="Android/data/com.pipeline.oa" path="."/>
    <external-path path="." name="external_storage_root"/>
    </paths>`

在这里插入图片描述
4.把原来的安装代码进行重构,这段代码android10以上也能适配(不知道位置的话就找到执行下载的代码,它下面那个就是安装的):`

File file = new File(Environment.getExternalStorageDirectory(), Version.UPDATE_SAVE_NAME);
        Intent intent1 = new Intent(Intent.ACTION_INSTALL_PACKAGE);
        Uri uri=null;
        if (Build.VERSION.SDK_INT >Build.VERSION_CODES.M) {
            String authority = "com.pipeline.oa.fileProvider";//这个就是刚才android:authorities=""里填的文字
            uri = FileProvider.getUriForFile(WelcomeActivity.this, authority , file);
            intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            intent1.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
        } else {
            intent1.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            uri = Uri.fromFile(file);
        }
        intent1.setDataAndType(uri, "application/vnd.android.package-archive");
        WelcomeActivity.this.startActivity(intent1);
        this.finish();`

到这步就结束了。

后记:虽然这个是很基本的东西,但是我处理两天才弄好。其实当时新版本已经下载到了内部存储里,就是更新完闪退,进去又要重新更新但是我已经把安装代码重构了,配置文件也都照着网上的更新了,依旧闪退。之后看日志,都是网上找不到的一些异常信息。最后下班回去,无意间点了android studio右下角的更新,然后发现编译出现异常,里面说我mainfrest文件里的权限位置不对,下图是正确位置:
在这里插入图片描述

我把它放在了application里面了,我去,弄了一天。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值