Java Android getContentResolver()。查询特定相机文件夹以在 Android API 级别 <= 28 设备中获取光标
Java Android getContentResolver().query for specific Camera folder to get cursor in Android API level <= 28 devices
我想从相机文件夹中获取最后拍摄的图像。我不想得到最后的截图或其他任何东西。我只想拍摄相机文件夹的最后一张照片。
此代码有效,但如果存在名为 "Cameras" 或 "xxx..Camera..xxx" 的文件夹,程序还会获取这些文件夹的数据。
cursor = MainActivity.this.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null,
MediaStore.Images.Media.DATA + " like ? ",
new String[] {"%Camera%"},
MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC");
但我不想查询名称中包含"Camera"字符序列的文件夹。我只想查询相机默认保存文件夹。就我而言 /storage/emulated/0/DCIM/Camera.
我可以使用
查询特定目录
MediaStore.Images.Media.BUCKET_DISPLAY_NAME
现在我的代码像这样工作并且没有任何问题:
cursor = MainActivity.this.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME + " = ? ",
new String[] {"Camera"},
MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC");
我想从相机文件夹中获取最后拍摄的图像。我不想得到最后的截图或其他任何东西。我只想拍摄相机文件夹的最后一张照片。
此代码有效,但如果存在名为 "Cameras" 或 "xxx..Camera..xxx" 的文件夹,程序还会获取这些文件夹的数据。
cursor = MainActivity.this.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null,
MediaStore.Images.Media.DATA + " like ? ",
new String[] {"%Camera%"},
MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC");
但我不想查询名称中包含"Camera"字符序列的文件夹。我只想查询相机默认保存文件夹。就我而言 /storage/emulated/0/DCIM/Camera.
我可以使用
查询特定目录MediaStore.Images.Media.BUCKET_DISPLAY_NAME
现在我的代码像这样工作并且没有任何问题:
cursor = MainActivity.this.getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
null,
MediaStore.Images.Media.BUCKET_DISPLAY_NAME + " = ? ",
new String[] {"Camera"},
MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC");