我一直通过以下方式从MediaStore
检索图像...
Uri uriExternal = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
String[] projection = {
MediaStore.MediaColumns._ID,
MediaStore.MediaColumns.DATE_ADDED
};
Cursor cursor = getContentResolver()
.query(uriExternal, projection,
MediaStore.MediaColumns.DATA + " IS NOT NULL",
null,
MediaStore.MediaColumns.DATE_ADDED + " DESC");
if(cursor != null) {
while (cursor.moveToNext()) {
String _id = cursor.getString(cursor.getColumnIndex(MediaStore.MediaColumns._ID));
paths.add(uriExternal.toString() + "/" + _id);
}
cursor.close();
}
基本上,我只是将文件ID附加到外部内容提供商uri。这使我可以与内容提供商一起使用的uri ...
content://media/external/images/media/{id}
一切正常,所有外部图像都可以完美显示和加载。但是,由于我找不到合适的文档,因此我有点担心我没有以正确的方式进行操作。尤其是由于我构建uri的方式...对它进行硬编码...
问题是...
答案 0 :(得分:1)
我个人use ContentUris.withAppendedId()
。这样,我不必担心我是否以Uri
结尾的/
开头。 :-)
通常,MediaStore
遵循原始的ContentProvider
愿景,即使用内容ID作为指向内容的Uri
的最后路径段。但是,这不是 通用规则,并且不适用于所有提供商。