gpt4 book ai didi

android - 从 ContentResolver.query() 获取 URI

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:04:29 25 4
gpt4 key购买 nike

我正在查询 Images 表以获取 MediaStore.Images.Media.EXTERNAL_CONTENT_URI 目录中的所有图片。

请参阅以下查询:

String[] what = new String[]{ MediaStore.Images.ImageColumns.DATE_TAKEN,
MediaStore.Images.ImageColumns._ID,
MediaStore.Images.ImageColumns.MIME_TYPE,
MediaStore.Images.ImageColumns.DATA };

String where = MediaStore.Images.Media.MIME_TYPE + "='image/jpeg'" +
" OR " + MediaStore.Images.Media.MIME_TYPE + "='image/png’";

Cursor cursor = getContext().getContentResolver()
.query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
what,
where,
null,
MediaStore.Images.ImageColumns.DATE_TAKEN + " DESC”);

现在,我想要一个指向每个结果的 Uri。这就是我现在正在做的事情:

int dataIndex = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
String path = cursor.getString(dataIndex);
final Uri uri = Uri.fromFile(new File(path));

例如,我从 DATA 列中获取路径,创建一个文件并使用 Uri.fromFile。我有两个问题。

  1. 这能保证有效吗?上面的查询是否保证返回数据列中的路径?它适用于我手机中的所有图片:path 始终是路径,例如 /storage/0/whatever.jpguri.toString() 相同,但文件方案相同。不过,图片可以很好地由 content://uris 定义,但我看不出这些图片是如何(以及是否)在图像表中表示的。

  2. 如果不是,我应该在 DATA 列中期待什么,以及如何从中获取 Uri?

最佳答案

Is the query above guaranteed to return paths in the data column?

它应该返回一些东西。那个“东西”可能无法使用。例如,图像可能位于可移动存储上,您无法直接访问它。

how to get an Uri from it?

你不知道。您从 _ID 构造一个 Uri:

Uri imageUri=
ContentUris
.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
cursor.getInt(cursor.getColumnIndex(MediaStore.Images.ImageColumns._ID)));

关于android - 从 ContentResolver.query() 获取 URI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37999782/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com