MediaStore.MediaColumns#DATE_TAKEN仅在API级别29可用吗?

问题描述

我正在尝试使用MediaStore.Images.Media.DATE_TAKEN,并从Android Studio IDE收到警告,提示它要求使用API​​ 29(Android Q)。 Google的官方文档here说这是在API级别29中添加的。这真的是真的吗?

我一直检查过以前版本的Google Sources,直到API 19(KitKat)为止,然后我看到MediaStore.MediaColumns#DATE_TAKEN字段自那时起可用。为什么官方文档说的有些不同?

Android 4.4(KitKat)MediaStore

Android 5.0(棒棒糖)MediaStore

Android 6.0(棉花糖)MediaStore

Android 7.0(牛轧糖)MediaStore

Android 8.0(Oreo)MediaStore

Android 9.0(Pie)MediaStore

有人可以澄清一下事实吗?我可以可靠地使用API​​ 19+中的MediaStore.Images.Media.DATE_TAKEN吗?谢谢!

解决方法

感谢this answer

Api diff for level 29中我们可以看到DATE_TAKEN一直存在,即使api级别低于29。唯一的区别是在Android Q之前这个const在{{1} } 但现在已移至 MediaStore.Images.ImageColumns。同时 MediaStore.MediaColumns 扩展了 ImageColumns因此 lint 无法准确识别它们。

但是,值本身在移动前后不会发生变化。因此您可以忽略警告。