MediaStore - BUCKET_DISPLAY_NAME 仅出现在 API 29+ 上?

Posted

技术标签:

【中文标题】MediaStore - BUCKET_DISPLAY_NAME 仅出现在 API 29+ 上?【英文标题】:MediaStore - BUCKET_DISPLAY_NAME only present on API 29+? 【发布时间】:2020-01-05 16:23:22 【问题描述】:

我计划查询 MediaStore.Images.Media.BUCKET_DISPLAY_NAME 字段,但 android Studio 说它仅在 API 29+ 上可用。另外,Android docs 也是这么说的。

但是,我发现 this *** post 从 2017 年开始使用相同的字段。

我在这里错过了什么?

谢谢。

编辑:我也在 Android 9.0 模拟器上尝试过,效果很好。

【问题讨论】:

【参考方案1】:

查看API diff 和当前的MediaStore source 时,我们可以看到在Android 10 (API 29) 之前,BUCKET_DISPLAY_NAME 是在MediaStore.Images.ImageColumns 内部声明的。在 API 29 上,此属性已移至 MediaStore.MediaColumnsMediaStore.Images.ImageColumns 实现),但常量的实际值是相同的。

所以看起来它只是简单地移到了父界面,但它的值是一样的。

【讨论】:

我想知道谷歌是否正在做一些事情来避免这样的混乱。 谢谢!我们遇到了类似的情况,将MediaStore.Images.ImageColumns.ORIENTATION 更改为MediaStore.MediaColumns.ORIENTATION。你有没有找到任何干净的解决方案?

以上是关于MediaStore - BUCKET_DISPLAY_NAME 仅出现在 API 29+ 上?的主要内容,如果未能解决你的问题,请参考以下文章

MediaStore数据库分析

MediaStore数据库分析

MediaStore数据库分析

Android:通过 MTP 连接时如何检测 MediaStore 的变化

MediaStore.Images.Media.getBitmap 意外失败

MediaStore.Images.Media 降低存储到画廊的图像质量