【问题标题】:Android Content Uri FormatAndroid 内容 Uri 格式
【发布时间】: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


【解决方案1】:

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

一般来说,MediaStore 坚持最初的 ContentProvider 愿景,即使用内容 ID 作为指向内容的 Uri 的最后一个路径段。但是,这不是一般规则,它不适用于所有提供商。

【讨论】:

    猜你喜欢
    • 2023-03-09
    • 1970-01-01
    • 2014-08-13
    • 1970-01-01
    • 2021-12-06
    • 1970-01-01
    • 2020-03-26
    • 1970-01-01
    • 2014-06-06
    相关资源
    最近更新 更多