我应该请求 READ 或 WRITE 权限以访问 Android Q 中的 Mediastore 图像吗?

Should i ask READ or WRITE permission to access Mediastore images in Android Q?

我最近将我的应用更新为 Target API 29 (Android Q)。这是一个照片应用程序,可以拍照并将图像存储在图库中。我通过 'getExternalStoragePublicDirectory' 获得 WRITE_EXTERNAL_STORAGE 在主要外部存储中创建文件夹的权限,并从图库中读取图像。由于上述方法已弃用,Google 推荐了三个选项,我选择了 Mediastore。

参考:https://developer.android.com/reference/android/os/Environment#getExternalStoragePublicDirectory(java.lang.String)

因为我们不再需要写入权限来存储图像,所以我在拍照时不再询问用户的写入权限。但是要阅读图像,我们需要获得许可。根据此 table,Google 建议获取 WRITE_EXTERNAL_STORAGEREAD_EXTERNAL_STORAGE

参考:https://developer.android.com/training/data-storage

它还说 "For other apps to access your file, though the other app needs the READ_EXTERNAL_STORAGE permission"

Android 文档中的此建议, https://developer.android.com/training/data-storage/shared/documents-files

“但是,如果您的应用使用媒体商店,您必须请求 READ_EXTERNAL_STORAGE 权限才能访问其他应用的媒体文件。”

我使用现有的 WRITE_EXTERNAL_STORAGE 权限进行了测试,我能够从图库中读取图像。但是从上面的建议来看,我觉得我应该选择READ_EXTERNAL_STORAGE更好,这样可以提供更精细的权限控制。

哪个更合适?

Android 更新了他们的文档以在访问图像时仅使用读取的外部存储。这是参考 https://developer.android.com/training/data-storage/use-cases