Android 7(1),想自学Android的速来

Android 7.0 以上安装Apk适配方案总结

解决:FileUriExposedException异常:
最近在 Android版本号大于 N的手机上强更 安装Apk时报错,错误信息如下:

android.os.FileUriExposedException: file:///storage/emulated/0/Download/xxxAppName.apk exposed beyond app through Intent.getData()

手机端调用的代码如下:

Intent intentUpdate = new Intent(“android.intent.action.VIEW”);
intentUpdate.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
Uri apkUri = Uri.fromFile(new File(upgradeMsg.apkpath));
intentUpdate.setDataAndType(apkUri, “application/vnd.android.package-archive”);
startActivity(intentUpdate);

报这个错误主要是应为google在6.0以后的版本做了权限限制, 应用程序 不能直接通过**file:// Uri向另一个共享资源,需要通过content://Uris **来共享资源,以便平台可以扩展接收应用程序的临时权限以访问资源。但是N之前的版本还是可以通过 file:// 的方式去共享资源的。
主要原因总结如下:

  1. 假如共享的文件是私有的,接收file://Uri 的App无法访问文件
  2. 在Android6.0之后引入运行时权限,如果file://Uri 的app没有申请 Manifest.permission.READ_EXTERNAL_STORAGE权限,在读取文件时 会引发崩溃

解决这种错误的方法google也给出了方案,用FileProvider,它为文件 创建 content://Uri 而不是 file://Uri 来做文件的安全共享。
FileProvider主要步骤:

  1. 定义FileProvider
  2. 指定可用文件
  3. 检索文件内容的URI
  4. 授权URI临时权限
  5. 向另一个应用程序提供内容URI

在AndroidManifest.xml中添加如下代码



注意: authorities:app的包名.fileProvider grantUriPermissions:必须是true,表示授予 URI 临时访问权限 exported:必须是false resource:中的@xml/file_paths是我们接下来要添加的文件

在res目录下新建一个xml文件夹,并且新建一个file_paths的xml文件

path:需要临时授权访问的路径(.代表所有路径) name:就是你给这个访问路径起个名字

现在就差修改安装时候的代码了,代码如下:

private void installApk() { //安装程序
Intent intentUpdate = new Intent(“android.intent.action.VIEW”);
intentUpdate.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { //对Android N及以上的版本做判断
Uri apkUriN = FileProvider.getUriForFile(MainActivity2.this,
MainActivity2.this.getApplicationContext().getPackageName() + “.FileProvider”, new File(upgradeMsg.apkpath));

自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级安卓工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Android移动开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频
如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Android)
img

最后

给大家送上我成功跳槽复习中所整理的资料,由于文章篇幅有限,所以只是把题目列出来了,我自己手头上整理的资料均和上面的答案可免费分享,需要这些资料和答案的朋友,可以点击这里免费领取

image

image

601)。**

[外链图片转存中…(img-Jpo0bqHC-1710757239812)]

[外链图片转存中…(img-KWg7lmQP-1710757239812)]

image

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值