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。
相关推荐
感觉不怎么会6 分钟前
Android 13 - 对讲app后台休眠后无法录音
android·linux
淬炼之火7 分钟前
基于Docker Desktop 和 Ubuntu 在 Windows上部署轻量化大模型(Qwen-LLM)
笔记·ubuntu·docker·语言模型·容器
AI视觉网奇18 分钟前
Delaying 20 processes from spawning due to memory pressure
笔记·学习·ue5
myloveasuka31 分钟前
分离指令缓存(I-Cache)和数据缓存(D-Cache)的原因
笔记·缓存·计算机组成原理·硬件
Hammer_Hans1 小时前
DFT笔记25
笔记
Minilinux20181 小时前
Android系列之 屏幕触控机制(一)
android·屏幕触控·andorid touch·viewroot
孞㐑¥1 小时前
算法—位运算
c++·经验分享·笔记·算法
冰语竹1 小时前
Android学习-随笔(安装后设置路径)
android·学习
芯思路1 小时前
STM32开发学习笔记之七【LCD显示图片】
笔记·stm32·学习
hssfscv1 小时前
Javaweb学习笔记——后端实战7 springAOP
笔记·后端·学习