Android 13的行为更改提到了这一点:
如果您的应用面向Android 13,您必须请求一个或多个新权限,而不是READ_EXTERNAL_STORAGE和WRITE_EXTERNAL_STORAGE权限。
(开发人员)
新权限包括:
- 图片和照片:读取介质图像
- 视频:READ_MEDIA_VIDEO音频
- 音频文件:读取媒体音频
但是,如果我需要从任意文件夹读取PDF文件,该如何处理呢?没有READ_MEDIA_DOCUMENT或类似的权限。那么其他类型的文件呢?不是图像、视频或音频的文件呢?我还可以为它们使用READ_EXTERNAL_STORAGE权限吗?
我在官方文档中没有找到任何相关信息,但老实说,文档只关注媒体文件,没有任何关于其他文件类型的信息(https://developer.android.com/about/versions/13/behavior-changes-13#granular-media-permissions)。
我也不确定除了视频、图像和音频之外的其他文档类型的WRITE_EXTERNAL_STORAGE权限。
1条答案
按热度按时间bwntbbo31#
根据相关文档():
在运行Android 10或更高版本的设备上,您无需任何存储相关权限即可访问和修改应用拥有的媒体文件,包括Media Store中的文件。下载收藏。例如,如果您正在开发相机应用,您无需请求与存储相关的权限,因为您的应用拥有您写入媒体商店的图像。
从android 10你可以不问权限从存储获取文件。完美的作品与各种文件(pdf,excel...)在我的应用程序上的android 13没有任何权限。所以你只需要问
READ_EXTERNAL_STORAGE
权限的SDK,少于android 10。但是,如果您需要特殊文件(例如,由Instagram应用程序创建,但不存储在通常的存储),您应该从您的列表中请求许可。
还应查找媒体存储的类型:https://developer.android.com/reference/android/provider/MediaStore
大约
WRITE_EXTERNAL_STORAGE
-因为sdkVersion=29,所以您不需要它编辑:正在重写我的应用程序,并希望添加一些东西:
这取决于你的应用需要做什么,但我已经从我的应用中删除了所有类型的存储权限(只有
WRITE_EXTERNAL_STORAGE
留给SDK少于29),只使用ACTION_OPEN_DOCUMENT,ACTION_OPEN_DOCUMENT_TREE
访问所有类型的文件(但不访问系统文件夹,ACTION_OPEN_DOCUMENT_TREE
也没有访问下载文件夹)。