android S 上 安装apk出现android.os.FileUriExposedException

简介: android S 上 安装apk出现android.os.FileUriExposedException

android S 上 安装apk出现android.os.FileUriExposedException


报错:

android.os.FileUriExposedException: file:///data/user/0/com.example.overlay.   exposed beyond app through Intent.getData()

原因:

andorid7.0系统以后,引入“私有目录被限制访问”,“StrictMode API 政策”导致的问题。解决办法很简单。就是用新的方式获取uri。

” StrictMode API 政策” 是指禁止向你的应用外公开 file:// URI。 如果一项包含文件 file:// URI类型 的 Intent 离开你的应用,应用失败,并出现 FileUriExposedException 异常。

解决方法

1.在AndroidManifest.xml中添加如下代码

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="com.example.overlay.idea.fileprovider"
    android:grantUriPermissions="true"
    android:exported="false">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>

注意事项:

authorities:app的包名.fileProvider

grantUriPermissions:必须是true,表示授予 URI 临时访问权限

exported:必须是false 为true则会报安全异常。

resource:中的@xml/file_paths是我们接下来要添加的文件

2、在res目录下新建一个xml文件夹,并且新建一个file_paths的xml文件,内容如下:

<?xml version="1.0" encoding="utf-8"?>
<paths>
    <root-path path="/data/user/0/com.example.overlay.idea/cache/" name="files_root" />
    <root-path path="." name="external_storage_root" />
</paths>

path:需要临时授权访问的路径(.代表所有路径)

name:访问路径名字

3.修改代码适配Android N

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) {
            Log.e(TAG, "installAPk: " + apkFile.getAbsolutePath());
            intent.setFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);
            Uri contentUri = FileProvider.getUriForFile(this, "com.example.overlay.idea.fileprovider",apkFile);
            intent.setDataAndType(contentUri, "application/vnd.android.package-archive");
        } else {
            intent.setDataAndType(Uri.fromFile(apkFile), "application/vnd.android.package-archive");
        }
        intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
        startActivity(intent);

4.申请权限,否则无法跳转至apk安装界面

<uses-permission android:name="android.permission.REQUEST_INSTALL_PACKAGES" />

(308条消息) android安装apk出现android.os.FileUriExposedException_android.os.fileuriexposedexception: file:///storag_冬瓜去哪儿的博客-CSDN博客

Failed to find configured root that contains的解决办法不知道这里能帮到你吗 - 简书 (jianshu.io)

目录
相关文章
|
5月前
|
Ubuntu 物联网 Linux
从零安装一个Linux操作系统几种方法,以Ubuntu18.04为例
一切就绪后,我们就可以安装操作系统了。当系统通过优盘引导起来之后,我们就可以看到跟虚拟机中一样的安装向导了。之后,大家按照虚拟机中的顺序安装即可。 好了,今天主要介绍了Ubuntu Server版操作系统的安装过程,关于如何使用该操作系统,及操作系统更深层的原理,还请关注本号及相关圈子。
|
6月前
|
存储 人工智能 Android开发
为什么微信发送的APP安装不了,.apk转化为.apk.1
微信发送的APP文件常被改为.apk.1格式导致无法安装,推荐使用夸克或QQ浏览器解决。
745 14
|
5月前
|
Web App开发 Ubuntu Oracle
Ubuntu安装与使用详解:掌握开源操作系统的钥匙
遵循这些步骤和指南,你将能够顺利地开始使用Ubuntu,并充分利用其强大的功能和友好的界面。
|
5月前
|
安全 Ubuntu Linux
如何安装Linux操作系统?
此时,您可以选择重新启动计算机,然后从硬盘上的Linux系统启动。以上是一个大致的安装过程。请注意,不同的Linux发行版可能会在细节上有所差异,因此在进行安装之前,请确保您阅读并理解了相应发行版的安装指南或文档。
|
5月前
|
Ubuntu Unix Linux
玩机强化技能,动手安装Ubuntu Linux操作系统
(13)Ubuntu重启过程中,你将在关机画面中看到提示文字“Please remove the installation medium, then press ENTER:”,按下“Enter”键即可重启电脑。
|
8月前
|
安全 Linux 数据安全/隐私保护
安装RHEL9.x操作系统
本教程详细介绍了在Windows系统上使用VMware Workstation 17.5 Pro安装RHEL 9.x的完整流程。首先准备所需设备和软件,包括Windows计算机、RHEL 9 ISO映像文件、VMware软件及相关下载链接。接着,通过创建虚拟机、配置硬件参数完成VMware的基本设置。随后进入RHEL 9.x安装环节,涵盖语言选择、软件配置、网络和主机名设置、时区调整、磁盘分区规划(如/boot、/、swap、/boot/efi等分区)以及用户和密码的创建。最后,启动安装程序并监控进度,直至系统重启进入图形化登录界面。整个过程配有详细步骤说明和截图,便于用户操作和理解。
安装RHEL9.x操作系统
|
11月前
|
移动开发 安全 Java
Android历史版本与APK文件结构
通过以上内容,您可以全面了解Android的历史版本及其主要特性,同时掌握APK文件的结构和各部分的作用。这些知识对于理解Android应用的开发和发布过程非常重要,也有助于在实际开发中进行高效的应用管理和优化。希望这些内容对您的学习和工作有所帮助。
1211 83
|
10月前
|
安全 算法 小程序
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
730 28
【03】微信支付商户申请下户到配置完整流程-微信开放平台创建APP应用-填写上传基础资料-生成安卓证书-获取Apk签名-申请+配置完整流程-优雅草卓伊凡
|
10月前
|
监控 关系型数据库 MySQL
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
zabbix7.0.9安装-以宝塔安装形式-非docker容器安装方法-系统采用AlmaLinux9系统-最佳匹配操作系统提供稳定运行环境-安装教程完整版本-优雅草卓伊凡
804 30
|
11月前
|
存储 人工智能 编译器
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡
774 11
【03】鸿蒙实战应用开发-华为鸿蒙纯血操作系统Harmony OS NEXT-测试hello word效果-虚拟华为手机真机环境调试-为DevEco Studio编译器安装中文插件-测试写一个滑动块效果-介绍诸如ohos.ui等依赖库-全过程实战项目分享-从零开发到上线-优雅草卓伊凡

推荐镜像

更多