首页 > 解决方案 > Android 内容 Uri 格式

问题描述

我一直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

解决方案


就个人而言,我使用ContentUris.withAppendedId(). 这样一来,我就不必担心我是否以Uri结尾的a 开头/。:-)

一般来说,MediaStore坚持ContentProvider使用内容 ID 作为Uri指向内容的最后一个路径段的原始设想。但是,这不是一般规则,并且不适用于所有提供商。


推荐阅读