【发布时间】:2019-01-21 21:52:24
【问题描述】:
我一直在通过以下方式从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 的方式......有点硬编码......
问题是……
这是为外部图像构建内容 uri 的正确方法吗?
有没有更可靠的方法来实现这一点?
【问题讨论】:
-
参见
android.content.ContentUris文档 -
正如 pskink 所暗示的,有
ContentUris.withAppendedId()。对于MediaStore,这很好用。不过,这并不是所有提供商都通用的东西。 -
谢谢大家。你们中的任何人都可以回答它以便我接受吗? @CommonsWare,爱你的书,让他们继续阅读!!!
标签: android