2

我们如何在 Android R - Android 11 中使用原始路径访问媒体文件

根据

https://developer.android.com/preview/privacy/storage#media-files-raw-paths

据说we can read a device's media files using direct file paths and native libraries

Mediacolumns DATA根据不推荐使用

https://developer.android.com/reference/android/provider/MediaStore.MediaColumns#DATA

4

1 回答 1

0

谷歌提供的相应文档不完整,只有部分有用,尤其是出了名的缺乏示例。在尝试使我的应用程序与 Android 11 兼容时,我注意到了这种奇怪的行为(使用文件访问方法):

  • 一个名为“/internal/bli/bla.db”的文件存在,但不可读。
  • 重命名为“bla.db.mp4”的文件变得可读。
  • 这也适用于“bla.db.jpg”。
  • 我的音乐收藏中的音频文件“whatever.mp4”是可读的。
  • 我的音乐收藏中任何名为“folder.jpg”的文件都不可读。
  • 这些文件之一,复制为“mist.jpg”,将变得可读。
  • MANAGE_EXTERNAL_STORAGE 权限消除了所有这些限制。

这首先对我来说看起来很乱,但是:

无法访问“folder.jpg”的原因可能是它没有包含在系统的图像数据库中,因为它已被识别为专辑封面图像。另一方面,所有具有文件扩展名“.mp4”或类似文件的文件都列在相应的音频媒体数据库中,因此可以访问。

这导致了我的假设:Andorid 的媒体数据库中列出的所有文件(音频或图像或电影或气味)都可以使用File方法通过其本机文件路径以读取模式访问,也许也适用于本机(C 或 C++)程序. 所有其他文件,包括用于专辑封面的图像,都存在,但不可读。

于 2021-12-28T13:35:04.520 回答