我正在查询
以下是查询语句:
例如,我从
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:// uri定义,但我不知道(和不知道)它们如何在图像表中表示。如果不能,那么我应该在
DATA
列中期望什么,并如何从中获取Uri?