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。
相关推荐
汤姆yu18 分钟前
基于android的大学学校食堂点餐系统
android
爱吃生蚝的于勒18 分钟前
【Linux】零基础学习命名管道-共享内存
android·linux·运维·服务器·c语言·c++·学习
m0_748240441 小时前
小皮面板Noinputfilespecified错误终极解决
android
xunyan62341 小时前
安卓冷启动流程(Android 15)
android
峰顶听歌的鲸鱼1 小时前
Kubernetes核心概述
运维·笔记·云原生·容器·kubernetes·云计算
代码游侠1 小时前
学习笔记——GPIO按键与中断系统
c语言·开发语言·arm开发·笔记·嵌入式硬件·学习·重构
郭优秀的笔记2 小时前
html鼠标悬浮提示功能
android·javascript·html
浅念-2 小时前
C++第一课
开发语言·c++·经验分享·笔记·学习·算法
蓝田生玉1232 小时前
PLUTO论文阅读笔记
论文阅读·笔记
冬奇Lab2 小时前
Android 15存储子系统深度解析(一):Vold与存储管理框架
android·车载系统·系统架构