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。
相关推荐
建群新人小猿14 小时前
陀螺匠企业助手——组织框架图
android·java·大数据·开发语言·容器
TheNextByte115 小时前
如何将文件从Android无线传输到 iPad
android·ios·ipad
赫萝的红苹果15 小时前
实验探究并验证MySQL innoDB中的各种锁机制及作用范围
android·数据库·mysql
FakeOccupational15 小时前
【树莓派 004】 RP2040 PIO JMP指令 : jmp()条件跳转+jmp 指令的常用条件+示例解释
笔记
狐5716 小时前
2026-01-19-LeetCode刷题笔记-1292-元素和小于等于阈值的正方形的最大边长
笔记·算法·leetcode
叶落无痕5216 小时前
Android Studio 2024.3.1 连接夜神模拟器
android·ide·android studio
张祥64228890416 小时前
误差理论与测量平差基础笔记六
笔记·算法·概率论
玲子的猫16 小时前
安卓原生开发实现图片双指放大预览功能
android
zpedu16 小时前
软考想一次过,有一个学习衡量标准吗?
人工智能·笔记
2501_9151063217 小时前
如何在iPad上高效管理本地文件的完整指南
android·ios·小程序·uni-app·iphone·webview·ipad