我的Android应用面向Android 13(API 33)
WRITE_EXTERNAL_STORAGE权限似乎在API 33(即Android 12及更低版本)以下运行良好,但在Android 13上运行应用时,不会显示WRITE_EXTERNAL_STORAGE的运行时权限弹出窗口。
我的Android应用在应用的私有存储中创建一个密钥库文件。
Android 13的行为更改提到了这一点:
如果您的应用面向Android 13,则必须请求一个或多个新权限,而不是READ_EXTERNAL_STORAGE。
新权限包括:
- 图片和照片:读取介质图像
- 视频:阅读_媒体_视频音频
- 音频文件:读取_媒体_音频
我没有在官方文档中找到任何关于这个的信息。文档只关注媒体文件,没有任何关于其他文件类型的文字。
https://developer.android.com/about/versions/13/behavior-changes-13#granular-media-permissions
1条答案
按热度按时间ryhaxcpt1#
TLDR:你不知道。
从谷歌的official documentation:
如果您的应用面向Android 11,则WRITE_EXTERNAL_STORAGE权限和WRITE_MEDIA_STORAGE特权权限将不再提供任何其他访问权限。
因此,实际上,如果你在Android 11或更高版本上请求WRITE_EXTERNAL_STORAGE,你将什么都不请求。这就是Android迁移到作用域存储的全部意义,它有效地阻止了应用阅读或写入其他应用的存储目录,除非它们正在访问特定的文件类型(例如,媒体,使用您提到的权限)或者由Google自己授予特殊的文件管理器权限。但TLDR安全性和应用卸载后的剩余文件是Google这样做的主要原因。
因此,如果你真的想写入文件,要么确保只写入应用的指定存储目录,在这种情况下,你根本不需要任何权限,或者如果你真的需要写入应用不拥有的目录,从谷歌获得文件管理器权限(如何获得该权限)