Android中添加两个(多个)FileProvider节点问题
来源:互联网 发布:java 打印byte数组 编辑:程序博客网 时间:2024/06/18 17:27
我们知道在android7.0,修改了对私有存储的限制,导致在获取资源的时候,不能通过Uri.fromFile(..)来获取uri了,但是在写入数据的时候是可以通过Uri.fromFile(..)来获取uri的,android 官网给出的解决办法是通过FileProvider来解决这一问题,我们需要在AndroidManifest.xml 配制provider节点。
<provider android:name="android.support.v4.content.FileProvider" android:authorities="${applicationId}.fileProvider" android:exported="false" android:grantUriPermissions="true" tools:replace="android:authorities"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" tools:replace="android:resource"/></provider>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
其中,provider_paths.xml如下所示:
<?xml version="1.0" encoding="utf-8"?><paths xmlns:android="http://schemas.android.com/apk/res/android"> <!-- /storage/emulated/0/Download/${applicationId}/.beta/apk--> <external-path name="beta_external_path" path="Download/"/> <!--/storage/emulated/0/Android/data/${applicationId}/files/apk/--> <external-path name="beta_external_files_path" path="Android/data/"/></paths>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
但是此时我们项目中可能会用到其他一些第三方sdk有用到拍照功能的话,他也为了适配android7.0也添加了这个节点,此时有些人可能就不知道如何下手了,其实很简单我们只要重写一个类 继承自FileProvider,然后就按上述方法在添加一个节点就可以了。例如:
<provider android:name="com.stay4it.content.MyFileProvider" android:authorities="${applicationId}.provider" android:grantUriPermissions="true" android:exported="false"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/cust_file_paths" /></provider>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
如果你不想自定义FileProvider,那么还有一种方法,那就是把第三方sdk中的路径配置copy到provider_paths.xml即可。
如下所示:
<?xml version="1.0" encoding="utf-8"?><paths xmlns:android="http://schemas.android.com/apk/res/android"> <!-- /storage/emulated/0/Download/${applicationId}/.beta/apk--> <external-path name="beta_external_path" path="Download/"/> <!--/storage/emulated/0/Android/data/${applicationId}/files/apk/--> <external-path name="beta_external_files_path" path="Android/data/"/> <external-path name="external_storage_root" path="."/> <files-path name="files" path="."/></paths>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
顺便推荐个开源库:
图片选择器,支持直接拍照并裁剪,单选裁剪,图片多选,裁剪比例设置等
转自:http://blog.csdn.net/jdsjlzx/article/details/68487013
阅读全文
0 0
- Android中添加两个(多个)FileProvider节点问题
- Android中添加两个(多个)FileProvider节点问题
- Android 7.0中FileProvider
- 关于AndroidManifest.xml 添加多个 provider节点问题
- 两个节点添加osd
- 在ASP.NET中实现多文件上传(以及添加节点的问题)(setAttribute())
- 两个链表的第一个公共节点问题
- Android 应用间共享文件(FileProvider)
- android studio 7.0 FileProvider问题详解及相机示例
- 二叉树中两个节点的第一个祖先父节点
- [VB.NET]VB中treeView问题,添加节点问题
- Android中退出多个Activity的两个经典方法
- Android中退出多个Activity的两个经典方法
- Android中退出多个Activity的两个经典方法
- Android 中退出多个Activity的两个经典方法
- Android中退出多个Activity的两个方法
- Android中退出多个Activity的两个经典方法
- 单链表问题(反转、是否有环、删除结尾第N个节点、合并两个sortlist、找到交点)
- czl蒟蒻的模板库1——Dijkstra
- Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer c
- 用Mathematica爬取我的百度经验目录
- 并查集问题
- Neural Networks and Deep Learning之中文翻译-关于本书
- Android中添加两个(多个)FileProvider节点问题
- 11.9考试爆炸记
- python库-numpy
- android-uevent 简记
- 高亮显示
- shell脚本循环建立文件夹的bug
- 高亮显示
- centos7.2 安装zookeeper并配置zookeeper集群
- 拦截器——替换表单中的敏感词