我已实施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://)。另一种解决方案是以某种方式使该文件夹对媒体扫描仪可见,详见"将照片添加到图库"在照片基础知识。这样做似乎没有改变任何东西。
答案 0 :(得分:1)
以下是两种可能的解决方案。
解决方案1。获取私人数据文件夹图片的列表,例如使用File.listFiles()方法并使用MatrixCursor创建自定义“假”光标。然后,将私有图像添加为“假”光标的行。最后,使用MergeCursor将两个游标(您已经拥有的游标和“假”游标)合并为一个游标。
解决方案2. 第二种解决方案与第一种解决方案非常相似。您可以create a Content Provider查询并查询文件列表,而不是获取文件列表。然后,如上所述,您可以使用MergeCursor将两个结果游标合并为一个游标。
我在这里留下this作为参考。