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。
相关推荐
代码游侠12 分钟前
复习——网络基础知识
网络·笔记·网络协议·算法·http
我命由我1234521 分钟前
Photoshop - Photoshop 工具栏(46)渐变工具
经验分享·笔记·学习·ui·职场和发展·学习方法·photoshop
diegoXie1 小时前
【R】tidyr::pivot_longer / pivot_wider 学习笔记
笔记·学习·r语言
AI视觉网奇1 小时前
ue metahuman 数字人换装笔记MetaTailor
笔记
ljt27249606611 小时前
Compose笔记(六十五)--插槽模式
android·笔记·android jetpack
d111111111d1 小时前
STM32平衡车测试,定时中断读取速度
笔记·stm32·单片机·嵌入式硬件·学习·模块测试
6666v61 小时前
Android Kotlin(3) Flow异步流
android·kotlin
三少爷的鞋1 小时前
为什么你的 SharedFlow 不工作?深挖这 3 个关键参数
android
lkbhua莱克瓦241 小时前
基础-事务
开发语言·数据库·笔记·mysql·事务
凛_Lin~~1 小时前
安卓 面试八股文整理(原理与性能篇)
android·java·面试·安卓