Android Content Uri格式

时间:2019-01-21 12:20:37

标签: android

我一直通过以下方式从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的正确方法吗?

是否有更可靠的方法来实现这一目标?

1 个答案:

答案 0 :(得分:1)

我个人use ContentUris.withAppendedId()。这样,我不必担心我是否以Uri结尾的/开头。 :-)

通常,MediaStore遵循原始的ContentProvider愿景,即使用内容ID作为指向内容的Uri的最后路径段。但是,这不是 通用规则,并且不适用于所有提供商。