Android FileProvider笔记

一、FileProvider是什么

通过FileProvider.getUriForFile(@NonNull Context context, @NonNull String authority, @NonNull File file)方法获得一个有临时权限的Uri给客户端用来访问本APP文件。

当然看FileProvider类的注释更加详细

二、代码示例

XML 复制代码
<provider
     android:name="androidx.core.content.FileProvider"
     android:authorities="com.mydomain.fileprovider"
     android:exported="false"
     android:grantUriPermissions="true">
     <meta-data
         android:name="android.support.FILE_PROVIDER_PATHS"
         android:resource="@xml/file_paths" />
 </provider>
XML 复制代码
//file_paths内容
<paths>
	<files-path
            name="moon"
            path="myDir/" />
</paths>
java 复制代码
File dir = new File(context.getFileDir(),"myDir");
FIle file = new File(dir,"my.png");
Uri contentUri = getUriForFile(getContext(), "com.mydomain.fileprovider", file);
//得到的就是: content://com.mydomain.fileprovider/moon/my.png

三、冲突解决

  1. 当多个SDK都包含androidx.core.content.FileProvider,并且authorities相同时,可以采用把多个SDK的file_paths文件内容合并的方式处理。
  2. 当多个SDK都包含androidx.core.content.FileProvider,并且authorities不同时,可以采取自定义FileProvider的方式,每个file_paths对应一个FileProvider。
相关推荐
范纹杉想快点毕业9 分钟前
ZYNQ PS 端 UART 接收数据数据帧(初学者友好版)嵌入式编程 C语言 c++ 软件开发
c语言·笔记·stm32·单片机·嵌入式硬件·mcu·51单片机
sun0077001 小时前
android ndk编译valgrind
android
AI视觉网奇2 小时前
android studio 断点无效
android·ide·android studio
jiaxi的天空2 小时前
android studio gradle 访问不了
android·ide·android studio
茯苓gao3 小时前
STM32G4 电流环闭环
笔记·stm32·单片机·嵌入式硬件·学习
easy20203 小时前
机器学习的本质:从跑模型到真正解决问题
笔记·学习·机器学习
No Silver Bullet3 小时前
android组包时会把从maven私服获取的包下载到本地吗
android
catchadmin3 小时前
PHP serialize 序列化完全指南
android·开发语言·php
汇能感知4 小时前
摄像头模组在智能家居设备中的应用
经验分享·笔记·科技
shizidushu4 小时前
Graph RAG论文阅读笔记
论文阅读·笔记·graphrag