Android 13下Scoped Storage权限未强制生效?存在认知误区求助
Scoped Storage 误解要点解析
1. 媒体集合是逻辑分类,而非物理目录
官方文档提到的MediaStore.Images/MediaStore.Video/MediaStore.Audio是逻辑媒体集合,对应文件的类型,而非具体的存储文件夹。只要文件属于图片、视频、音频类型(比如JPG、MP4),无论它存放在下载目录、TikTok的子文件夹还是其他公共目录,都会被系统自动扫描并纳入对应的MediaStore集合。
2. Android 13+ 的权限规则简化与用户授权例外
- Android 13及以上版本,访问MediaStore中的图片、视频、音频无需申请
READ_EXTERNAL_STORAGE,只需分别声明READ_MEDIA_IMAGES、READ_MEDIA_VIDEO、READ_MEDIA_AUDIO权限。 - 如果你的应用是通过**系统文件选择器(如
ACTION_OPEN_DOCUMENT)**获取文件,只要用户手动选择了目标文件,应用就会获得该文件的临时访问权限——这属于用户主动授权,不受Scoped Storage的常规权限限制,这也是你能访问TikTok文件夹内文件的核心原因。
3. 第三方应用的存储权限策略
多数第三方应用(如TikTok、Lensa)会将生成的媒体文件保存到公共可访问目录(如Download、DCIM下的子文件夹),并且设置文件权限为全局可读。这类文件会被MediaStore自动索引,其他应用无需额外权限即可通过MediaStore访问。只有当第三方应用将文件存放在自己的私有目录(如getFilesDir()、getExternalFilesDir())且未开放全局权限时,其他应用才无法直接访问。
4. PDF文件的访问逻辑
PDF不属于MediaStore的媒体集合范畴,按照Scoped Storage规则,访问PDF需通过系统文件选择器让用户手动授权,或者申请READ_EXTERNAL_STORAGE权限。你能访问下载目录的PDF,同样是因为用户通过文件选择器主动选择后,应用获得了临时访问权限。
内容的提问来源于stack exchange,提问作者Martin
相关产品推荐
相关产品推荐

