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。
相关推荐
JeffDingAI2 分钟前
【Datawhale学习笔记】Word2Vec
笔记·学习·word2vec
小乔的编程内容分享站3 分钟前
C语言结构体相关笔记
c语言·笔记
世洋Blog7 分钟前
Python3笔记,特别的和C#对照
笔记
dulu~dulu12 分钟前
英语完形填空题型总结
笔记·学习·英语完形填空·自用
skywalk816313 分钟前
dnote:支持控制台下直接操作的一款简单的命令行笔记本,单一二进制文件,无依赖项。还能通过自托管服务实现设备间同步,并提供REST API服务
笔记·dnote
来生硬件工程师13 分钟前
【PCB设计笔记】PCB布局时,如何将器件排列到鼠标框选的区域?(Altium Designer 25)
笔记
Aliex_git16 分钟前
GitHub Copilot 使用笔记
笔记·学习·github·copilot·ai编程
上天_去_做颗惺星 EVE_BLUE17 分钟前
Android设备与Mac/Docker全连接指南:有线到无线的完整方案
android·linux·macos·adb·docker·容器·安卓
zhangphil17 分钟前
Android显示系统性能分析:trace的HWUI All Memory与HWUI Misc Memory
android
BingoXXZ18 分钟前
20260114Linux学习笔记
linux·服务器·笔记·学习