为数据目录

时间:2017-07-15 21:24:27

标签: android uri android-cursorloader

我已实施photo basics请求相机操作并将照片保存到我的数据目录中:

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

我现在希望能够检索所有图像,并且我希望使用CursorLoader来执行此操作。

以前,为所有外部媒体文件创建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 个答案:

答案 0 :(得分:1)

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

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

解决方案2. 第二种解决方案与第一种解决方案非常相似。您可以create a Content Provider查询并查询文件列表,而不是获取文件列表。然后,如上所述,您可以使用MergeCursor将两个结果游标合并为一个游标。

我在这里留下this作为参考。