首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android: FileProvider IllegalArgumentException无法找到包含/data/data/的已配置根目录

Android: FileProvider IllegalArgumentException无法找到包含/data/data/的已配置根目录

Android中的FileProvider是一个特殊的ContentProvider,用于在应用间共享文件。当使用FileProvider时,有时会遇到IllegalArgumentException异常,提示无法找到包含/data/data/的已配置根目录。

这个异常通常是由于FileProvider的配置问题引起的。要解决这个问题,可以按照以下步骤进行操作:

  1. 确保已正确配置FileProvider。在AndroidManifest.xml文件中,需要添加一个FileProvider的配置项,指定FileProvider的authority和文件路径的映射关系。例如:
代码语言:txt
复制
<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="com.example.myapp.fileprovider"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/file_paths" />
</provider>

其中,android:authorities指定了FileProvider的authority,android:resource指定了文件路径的映射关系配置文件。

  1. 确保已正确配置文件路径的映射关系。在res/xml目录下创建一个file_paths.xml文件,用于配置文件路径的映射关系。例如:
代码语言:txt
复制
<paths>
    <files-path name="my_files" path="files/" />
    <external-path name="my_external_files" path="." />
</paths>

这个配置文件指定了两个文件路径的映射关系,分别是应用内部的files目录和外部存储的根目录。

  1. 确保使用FileProvider获取文件URI时,传入的路径是正确的。例如,如果要获取应用内部的文件URI,可以使用以下代码:
代码语言:txt
复制
File file = new File(getFilesDir(), "myfile.txt");
Uri uri = FileProvider.getUriForFile(this, "com.example.myapp.fileprovider", file);

在这个例子中,getFilesDir()获取了应用内部的files目录,"myfile.txt"是要共享的文件名。

总结一下,当遇到Android: FileProvider IllegalArgumentException无法找到包含/data/data/的已配置根目录的异常时,需要检查FileProvider的配置是否正确,包括AndroidManifest.xml中的配置和file_paths.xml中的配置。同时,还需要确保使用FileProvider获取文件URI时,传入的路径是正确的。

腾讯云相关产品和产品介绍链接地址:

请注意,以上只是腾讯云的一些相关产品,其他云计算品牌商也提供类似的产品和服务。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

android共享文件夹_安卓多用户共享文件

如果一项包含文件 URI Intent 离开您应用,应用会停止运行,并出现 FileUriExposedException异常。...="android.support.v4.content.FileProvider" android:authorities="app包名.fileProvider" android:...,不进行授权,不会遇到Permission Denial问题 为什么Android 4.4设备遇到权限问题,不通过addFlags这种方式解决 错误分析 报错 java.lang.IllegalArgumentException...,指定文件所在路径没有包含在path所指定路径中 疑惑 遇到这样一个到现在没有理解问题,在小米6,MIUI 9.0 上面,使用下面的代码,进行图片裁剪。...无法获取外置SD卡问题解决方案 | Failed to find configured root that contains FileProvider 使用(Failed to find configured

3.3K40

FileProvider无法获取外置SD卡问题解决方案 | Failed to find configured root that contains

它对应getCacheDir返回路径:eg:“/data/data/com.jph.simple/cache”; 该方式提供在外部存储区域根目录文件...以上便是Android官方文档上介绍FileProvider所有支持所以path类型,这些类型在Android手机内部存储区文件共享是可以行,但对于外置SD卡是不行,如果你想通过FileProvider.getUriForFile...FileProvider获取对外置SD卡支持 从Android官方文档中没有找到FileProvider对外置SD卡支持任何说明,下面我们就从FileProvider源码中找找是否有突破口,在FileProvider...从上图可以看出root-path代表/也就是Android设备根目录,该目录下包含着手机内部存储器,外置SD卡等所有文件目录。...然后我们允许程序,发现将path设置为root-path解决了FileProvider无法使用外置SD卡问题。

1.8K80

AndroidFileProvider authorities 重名会怎么样?

先说结论:如果有两个或多个 FileProvider authorities 重名,那么只有合并后 AndroidManifest.xml 文件里,排在最前面的那个配置会生效。...官方文档:https://developer.android.com/reference/android/support/v4/content/FileProvider.html ,我再三确认了配置本身没有问题...阅读 Android Frameworks 里相关源码,确认解析 provider 配置、取 FileProvider 实例逻辑。...源码确认 首先是在 Android Studio 里进行,找到调用 SimplePathStrategy 构造方法地方,是在 android.support.v4.content.FileProvider...(这一点在官方文档之类都没有找到说明,也许官方觉得配置名称 autorities 就说明了一切?实测可正常使用。)

28610

Android 一起来看看 7.0 新特性 FileProvider

本篇文章授权为微信公众号 code小生 发布 一、前言 ---- 对于 Android 7.0,提供了非常多变化,不过和我们开发者关联最大,或者说必须要适配就是去除项目中传递 file:// 类似格式...对于面向 Android 7.0 应用,Android 框架执行 StrictMode API 政策禁止在应用外部公开 file:// URI , 如果一项包含文件 URI intent 离开应用...写好 filepaths.xml 文件之后,要将此文件链接到 FileProvider 中,就必须添加一个 元素作为定义 FileProvider 元素子元素...将 元素 android : name 属性设置为 android.support.FILE_PROVIDER_PATHS, 将元素 "android : resource".../> 3、使用 FileProvider 生成内容 URI 配置工作已经全部完成了,后面就需要将之前传递 file:// 替换成 FileProvoider 需要用到

1.5K40

Bugly升级SDK适配Android N

我们可以看到在provider中需要配置相应meta-data,这个是共享文件路径,在res目录下新建xml文件夹并新建对应xml文件(如下面的provider_paths),如下所示: ?...可以看到我配置了两个external-path,这两个路径都是beta下载文件可能存在路径,举个例子,第一个路径存在uri如下: content://com.bugly.upgrade.demo.fileProvider...例如:/data/data/com.bugly.upgrade.demo/cache 表示路径在外部存储区域根目录子目录...例如: /storage/emulated/0/Android/data/com.bugly.upgrade.demo/cache 通过FileProvider获取Uri路径 示例代码: Uri uri...大致解决方案就如上所示啦,已经在Android 7.0验证通过了,由于在Android 7.0以上强制要求配置FileProvider,但考虑API低于24以下还是沿用之前方法,所以只在API高于24

83320

uniapp下载apk并且安装(uniapp打包后apk白屏)

Android 打开Android项目,配置主APPAndroidmanifest.xml文件, 导航到Application节点,创建meta-data节点,name为dcloud_appkey...四、导入Android Studio 0 新建Android项目 官网开发环境文档 如果之前没有新建Android项目,那么要先创建一个空项目,如果创建,可忽略此步骤。...minSdkVersion最低支持21,小于21在部分5.0以下机型上将无法正常使用。 图片上Mini SDK是19,实际要选21....替换后: android:authorities=“com.carrie.knowpicture.dc.fileprovider配置应用名称、图标和启动界面 应用名称 打开 res - values...(文件夹结构包含 appid 和 www) 配置资源文件 打开之前下载小程序SDK文件夹, 打开 SDK - assets 文件夹,复制 data 文件夹到 Android Studio

5.7K20

Android7.0适配之FileProvider

对于Android 7.0,提供了非常多变化,详细可以阅读官方文档Android 7.0 行为变更,记得当时做了多窗口支持、FileProvider以及7.13D Touch支持,不过和我们开发者关联最大...如果一项包含文件 URI intent 离开您应用,则应用出现故障,并出现 FileUriExposedException 异常。...(this, "com.zhy.android7.fileprovider", file); 第二个参数就是我们配置authorities,这个很正常了,总得映射到确定ContentProvider...方式二为grantUriPermission来进行授权 相比来说方式二较为麻烦,因为需要指定目标应用包名,很多时候并不清楚,所以需要通过PackageManager进行查找到所有匹配应用,全部进行授权...library最终可能会让多个项目引用,而android:authorities是不可以重复,如果两个app中定义了相同,则后者无法安装到手机中(authority conflict)。

1.6K40

Android7.0适配心得

如果一项包含文件 file:// URI类型 Intent 离开你应用,应用失败,并出现 FileUriExposedException 异常,如调用系统相机拍照,或裁切照片。...="true" android:exported="false"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS...() 心得:上述代码中path="",是有特殊意义,它代码根目录,也就是说你可以向其它应用共享根目录及其子目录下任何一个文件了,如果你将path设为path="pictures", 那么它代表着根目录...但,这些隐式广播会在后台频繁启动注册侦听这些广播应用,从而带来很大电量消耗,为缓解这一问题来提升设备性能和用户体验,在Android 7.0中删除了三项隐式广播,以帮助优化内存使用和电量消耗。...在 Android 7.0上应用无法发送或接收 ACTION_NEW_PICTURE 或ACTION_NEW_VIDEO 类型广播。

1.3K50

Android7.0后FileProvider升级安装包导致FileUriExposedException异常

uri文件地址改变,使用FileProvider可以生成content://Uri来替代file://Uri 官方解答:出于用户隐私安全考虑,谷歌——(对于面向 Android 7.0 应用,Android...传递软件包网域外 file://URI 可能给接收器留下无法访问路径。因此,尝试传递 file://URI会触发 FileUriExposedException。..." /> 2.在清单文件中注册一个名叫FileProvider ContentProvider, 子元素指向一个 XML 文件,用于指定要共享目录。...--:外部存储空间根目录,等同于 Environment.getExternalStorageDirectory() 所获取目录路径;--> 表示应用程序内部SD卡存储目录下 cache/ 目录,共享完整路径为/storage/emulated/0/Android/data/com.bo.view

2.4K31

Android开发笔记(一百七十六)借助FileProvider发送彩信

通过系统相册固然可以获得照片路径对象,却无法知晓更多详细信息,例如图片名称、文件大小、文件路径等等都不知道,也就无法进行个性化定制开发。...为此需要重头配置FileProvider,详细配置步骤说明如下。...-- 兼容Android7.0,把访问文件Uri方式改为FileProvider --> <provider android:name="androidx.core.content.FileProvider...:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS...之后运行App,测试页面会自动加载从媒体库中找到六张图片,填好各项信息界面效果如下图所示。 最后点击某张图片,表示选中该图片作为彩信附件,界面下方弹出如下图所示应用选择窗口。

65720

App磁盘沙盒工具实践

1.2 沙盒作用 可以通过该工具查看缓存文件 快速查看data/data/包名目录下缓存文件。 快速查看/sdcard/Android/data/包名下存储文件。.../ 第一个"/"表示根目录,其后每个"/"表示目录分割符。...如下所示,根目录下几个需要关注目录: /data/ 这个是前面说私有文件 /sdcard/ /sdcard/是软链接,指向/storage/self/primary /storage...,如果没有则申请;如果有则进行第二步; 第二步:先把文件转移到外部存储文件,为何要这样操作,主要是解决data/data下目前文件无法直接分享问题,因此需要将目标文件拷贝到外部路径 第三步:通过intent...(xx)时,遍历Map,找到最匹配条目,最匹配即为external_file。

1.7K30
领券