这个主要问题是在android系统下7.0

拍照时,Android提供FileProvider类来供应用之间共享数据。

出现这个问题多为xml文件 path 类型和代码中调用的类型不同导致的

以下为多种各种xml文件和对应path类的关系

<files-path path="" name="camera_photos" />

该方式提供在应用的内部存储区的文件/子目录的文件。它对应Context.getFilesDir返回的路径:eg:"/data/data/com.jph.simple/files"。

<cache-path name="name" path="path" />

该方式提供在应用的内部存储区的缓存子目录的文件。它对应getCacheDir返回的路径:eg:“/data/data/com.jph.simple/cache”;

<external-path name="name" path="path" />

该方式提供在外部存储区域根目录下的文件。它对应Environment.getExternalStorageDirectory返回的路径:eg:"/storage/emulated/0";

<external-files-path name="name" path="path" />
该方式提供在应用的外部存储区根目录的下的文件。它对应Context#getExternalFilesDir(String) Context.getExternalFilesDir(null)返回的路径。eg:"/storage/emulated/0/Android/data/com.jph.simple/files"。
<external-cache-path name="name" path="path" />

该方式提供在应用的外部缓存区根目录的文件。它对应Context.getExternalCacheDir()返回的路径。eg:"/storage/emulated/0/Android/data/com.jph.simple/cache"

这些就是FileProvider提供的所有支持的path类型

如果使用外部SD卡

则需要设置

<?xml version="1.0" encoding="utf-8"?>
<resources>
<paths>
<root-path path="" name="camera_photos" />
</paths>
</resources>

添加root-path节点

这样FileProvider就可以使用外部储存卡了

以上解决了Android高版本file使用的问题,下面还有个问题,就是多个文件夹需求,如何去使用FileProvider

如,我拍照需要文件夹,下载的文件也需要新的文件

那么其实只需要声明一个FileProvider,然后再xml里再声明一个paths即可

如下为file_paths.xml文件

<paths>
<external-path name="takpic_img_path" path="Camera"/> <external-path name="apk_file_path" path="APL_DOWNLOAD"/>
</paths>
FileProvider正常声明为同一个即可
     <provider
android:name="android.support.v4.content.FileProvider"
android:authorities="com.xxxx.fileprovider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
tools:replace="android:resource"
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_paths" />
</provider>

这样在调用的时候

 uri=FileProvider.getUriForFile(mContext.getApplicationContext(),"com.xxxx.fileprovider",apkFile);

这样去获取Uri即可,多个地方只需要传不同的file,但是去使用同一个 authorities

Failed to find configured root that contains的更多相关文章

  1. FileProvider相关 Failed to find configured root that contains

    问题: 使用FileProvider构造SD卡中文件uri时异常 java.lang.IllegalArgumentException: Failed to find configured root ...

  2. Android FileProvider相关 Failed to find configured root that contains

    问题: 使用FileProvider构造SD卡中文件uri时异常 java.lang.IllegalArgumentException: Failed to find configured root ...

  3. Cannot run CentOS 7 or RHEL 7 installer: “Failed to start Switch Root”

    这个问题是由于安装程序默认的LABEL对于你要安装的磁盘系统分区不匹配造成的 通过编辑引导参数来使安装程序运行 在选择安装选项之前,按‘e’添加相应的引导参数

  4. 应用中对APK进行安装

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

  5. FileUriExposedException_Android7.0适配

    一. FileUriExposedException的解决 问题 由于在Android7.0上,google使用了新的权限机制,所以导致在调用相机的时候,如果传递的URI为”file://”类型,的系 ...

  6. 为安卓项目添加FileProvider

    简单记录 android7.0开始出现FileProvider.从一个小白角度看需要注意这几点: Manifest.xml中添加provider节点 添加xml文件 模块的build.gradle中添 ...

  7. Android 解析包时出现问题 的解决方案(应用检查更新)

    问题描述我们在进行Android开发的时候,一般都会在应用里检测有没有更新,并且从网上下载最新的版本包,覆盖本地的旧版本.在我的项目中,出现了一个问题,就是当安装包下载到本地的时候,产生了" ...

  8. Starting MySQL.The server quit without updating PID file (xxxx.pid).[FAILED]

    mysql无法正常启动,查看日志报如下异常 --07T01::.929615Z [ERROR] Fatal error: Please read "Security" sectio ...

  9. SVN客户端解决authorization failed问题

    遇到authorization failed问题 进人 [root@localhost conf]# pwd /opt/svndata/shell/conf [root@localhost conf] ...

随机推荐

  1. 客户端不能连接MySQL - 2003-Can't connect to MySQL server on '192.168.43.180'(10060 "Unknown error")

    客户端不能连接MySQL 场景: 数据库(此处以MySQL为例)安装在虚拟机里面,在宿主机上进行连接数据库的时候始终不能连接,但在虚拟机中使用正常. 针对上面的场景: 1. 在虚拟机里面可以正常使用M ...

  2. jieba(杰巴)分词的三种模式

    jieba(结巴)是一个强大的分词库,完美支持中文分词,做为最好的Python中文分词组件. 安装:pip install jieba 特点 支持三种分词模式: 1.精确模式,试图将句子最精确地切开, ...

  3. luogu P3197 [HNOI2008]越狱

    构造长度为n的串,给定m种颜色,求使得相邻两位的颜色相同的方案数 显然可以看出长度为n的串染m种颜色的总方案数为$m^{n}$ 然后来考虑相邻两位颜色不同的方案 对于第一位,有m种选择 对于剩余的n- ...

  4. Elasticsearch从入门到精通之Elasticsearch集群内的原理

    上一章节我介绍了Elasticsearch安装与运行,本章节及后续章节将全方位介绍 Elasticsearch 的工作原理 在这个章节中,我将会再进一步介绍 cluster . node . shar ...

  5. C#-----类DateTime的常用方法

    1.TryParse(string s, out DateTime result)    将日期和时间的指定字符串表示形式转换为其 System.DateTime 等效项,并返回一个指示转换是否成功的 ...

  6. 认识.net

    .NET多指NET Framework,Visual Studio.NET及其开发的应用程序.NET Framework是一个开发和执行环境,允许不同的程序语言和库无缝结合基于Window的应用程序. ...

  7. 向日葵连CentOS

    TeamViewer可以连CentOS,但TeamViewer最近老是提示“检测为商业用途”,5分钟就会自动断,用起来非常不爽,所以决定改用向日葵试下,向日葵目前的口碑也不错,更何况是国产软件,更要支 ...

  8. B/S架构图解

  9. lnmp mysql远程访问设置

    一:iptables 设置开放3306访问 iptables -L -n --line-numbers 1,删除DROP 3306 iptables -D INPUT 5[序列号] 2,添加 ACCE ...

  10. 2019/4/15 wen 正则表达式