安卓内容 uri 格式

  • 本文关键字:uri 格式 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 的正确方法吗?

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

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

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

最新更新