Android 13 - 如何请求 WRITE_EXTERNAL_STORAGE

2024-03-10

我的 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。

新的权限是:

  • 图片和照片:READ_MEDIA_IMAGES
  • 视频:READ_MEDIA_VIDEO 音频
  • 音频文件:READ_MEDIA_AUDIO

我在官方文档中没有找到任何关于此的信息。 该文档仅关注媒体文件,没有提及其他文件类型。

https://developer.android.com/about/versions/13/behavior-changes-13#capsular-media-permissions https://developer.android.com/about/versions/13/behavior-changes-13#granular-media-permissions


TLDR:你不知道。

来自谷歌的官方文档 https://developer.android.com/about/versions/11/privacy/storage:

“如果您的应用以 Android 11 为目标平台,则 WRITE_EXTERNAL_STORAGE 权限和 WRITE_MEDIA_STORAGE 特权权限将不再提供任何额外访问权限。”

因此,实际上,如果您在 Android 11 或更高版本上请求 WRITE_EXTERNAL_STORAGE,您将不会请求任何内容。这就是 Android 迁移到范围存储的全部要点,它有效地防止应用程序读取或写入其他应用程序的存储目录,除非它们正在访问特定的文件类型(例如媒体,使用您提到的权限)或被授予特殊的文件管理器Google 自己的权限。有关作用域存储的更多信息,请参阅这篇写得很好的文章article https://www.androidcentral.com/what-scoped-storage,但 TLDR 安全性和应用程序卸载留下的文件是 Google 这样做的主要原因。

因此,如果您确实想写入文件,请确保您只写入应用程序的文件指定存储目录 https://developer.android.com/about/versions/11/privacy/storage#app-specific-external,在这种情况下,您根本不需要任何权限,或者如果您确实需要写入您的应用程序不拥有的目录,请从 Google 获取文件管理器权限(如何获得该许可 https://developer.android.com/about/versions/11/privacy/storage#all-files-access)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android 13 - 如何请求 WRITE_EXTERNAL_STORAGE 的相关文章