android - MediaStore.MediaColumns#DATE_TAKEN 是否仅适用于 API 级别 29?
问题描述
我正在尝试使用MediaStore.Images.Media.DATE_TAKEN并从 Android Studio IDE 收到警告说它需要 API 29 (Android Q)。此处的 Google 官方文档说这是在 API 级别 29 中添加的。这是真的吗?
在 API 19 (KitKat) 之前,我一直检查过去版本的 Google Sources,我看到 MediaStore.MediaColumns#DATE_TAKEN 字段从那时起可用。为什么官方文档说的不一样?
Android 4.4 (KitKat)媒体商店
Android 5.0 (Lollipop)媒体商店
Android 6.0(棉花糖)媒体商店
Android 7.0(牛轧糖)媒体商店
Android 8.0(奥利奥)媒体商店
Android 9.0(派)媒体商店
有人可以澄清真相吗?我可以从 API 19+可靠地使用MediaStore.Images.Media.DATE_TAKEN吗?谢谢!
解决方案
感谢这个答案。
从级别 29 的 Api diff 中,我们可以看到它DATE_TAKEN
一直存在,即使 api 级别低于 29。唯一的区别是,在 Android Q 之前,这个 const 存在,MediaStore.Images.ImageColumns
但现在被移到MediaStore.MediaColumns
了。同时ImageColumns
延伸MediaColumns
。因此,lint 无法准确识别它们。
但是,值本身在移动前后不会改变。所以你可以忽略警告。
推荐阅读
- python - LAMP 上的 Django - 默认 /admin 并不总是显示应用程序及其模型
- reactjs - 多个 datepicker material-ui 乱序
- reactjs - 我如何阻止 redux 状态发生变异
- javascript - 嵌套在其他对象中的方法是如何存储的?
- cross-domain - 跨域广告系列跟踪,无重定向(无链接器)
- python - Accessing a dictionary as attributes of a custom class
- php - 如何在 MySQL 数据库中插入 pdf 文件,然后在 php 中读取?
- php - 为什么准备好的语句变量不具有约束力?
- php - 在 github 工作流中使用 mysql 总是导致 SQLSTATE[HY000] [1045] Access denied for user error
- mysql - 3 表连接给我重复的记录