为数据目录创建游标加载器



我已经实现了照片基础知识来请求相机操作并将照片保存到我的数据目录中:

storage/emulated/0/Android/data/[package]/files/Pictures/[image name]

我现在希望能够检索所有图像,我想通过使用游标加载器来实现。

以前,为所有外部媒体文件创建 CursorLoader 如下所示:

String[] columns = new String[]{MediaStore.Images.Media._ID,
MediaStore.Images.Media.TITLE,
MediaStore.Images.Media.DATA,
MediaStore.Images.Media.SIZE,
MediaStore.Images.Media.DISPLAY_NAME,
MediaStore.Images.Media.DATE_MODIFIED};
return new CursorLoader(this,
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
columns,
null,
null,
//Sort by descending date
MediaStore.Images.Media.DATE_MODIFIED + " DESC");

我想这样做,但也要将图像包含在我的私人数据文件夹中。有什么办法吗?

我不确定如何检索该文件夹的内容 URI(仅 file://(。另一种解决方案是以某种方式使此文件夹对媒体扫描仪可见,如照片基础知识中的"将照片添加到图库"中所述。这样做似乎并没有改变任何事情。

以下是两种可能的解决方案。

解决方案 1.获取私有数据文件夹图像的列表,例如通过使用File.listFiles((方法,并使用MatrixCursor创建自定义"假"光标。然后,将私有映像添加为"假"光标的行。最后,使用 MergeCursor 将两个游标(您已经拥有的问题和"假"游标(合并为一个游标。

解决方案 2.第二个解决方案与第一个解决方案非常相似。您可以创建内容提供程序并对其进行查询,而不是获取文件列表。然后,如上所述,您可以使用 MergeCursor 将生成的两个游标合并为一个游标。

我把这个留在这里供参考。

最新更新