【发布时间】:2016-06-23 19:03:23
【问题描述】:
我正在查询Images表获取MediaStore.Images.Media.EXTERNAL_CONTENT_URI目录下的所有图片。
查看以下查询:
String[] what = new String[]{ MediaStore.Images.ImageColumns.DATE_TAKEN,
MediaStore.Images.ImageColumns._ID,
MediaStore.Images.ImageColumns.MIME_TYPE,
MediaStore.Images.ImageColumns.DATA };
String where = MediaStore.Images.Media.MIME_TYPE + "='image/jpeg'" +
" OR " + MediaStore.Images.Media.MIME_TYPE + "='image/png’";
Cursor cursor = getContext().getContentResolver()
.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
what,
where,
null,
MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC”);
现在,我想要一个 Uri 指向每个结果。 这就是我现在正在做的事情:
int dataIndex = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
String path = cursor.getString(dataIndex);
final Uri uri = Uri.fromFile(new File(path));
例如,我从DATA 列中获取路径,创建一个文件并使用Uri.fromFile。我有两个问题。
这能保证工作吗?上面的查询是否保证返回数据列中的路径?它适用于我手机中的所有图片:
path始终是路径,如/storage/0/whatever.jpg,和uri.toString()相同,但使用文件方案。不过,图片可以很好地由 content:// uris 定义,但我看不到这些图片是如何(以及是否)在 images 表中表示的。如果不是,我应该在
DATA列中期待什么,以及如何从中获取 Uri?
【问题讨论】:
标签: android uri android-contentprovider android-contentresolver