Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用游标装入器查询目录_Android_Sqlite_Android Cursorloader - Fatal编程技术网

Android 使用游标装入器查询目录

Android 使用游标装入器查询目录,android,sqlite,android-cursorloader,Android,Sqlite,Android Cursorloader,这让我忙了一整天 我正在自定义一个图库,用户可以在其中选择一个或多个图像,我正在使用使用游标加载程序的现有项目。几乎每个项目都使用媒体库URI来查询内存中的所有图像。但是,我只希望扫描一个特定的目录,并显示其中的图像 几行代码部分满足了我的要求: final String imagesDirectory = "/storage/sdcard0/DCIM/" String selection = MediaStore.Images.Media.DATA + " LIKE '" + imagesDi

这让我忙了一整天

我正在自定义一个图库,用户可以在其中选择一个或多个图像,我正在使用使用
游标加载程序的现有项目。几乎每个项目都使用媒体库URI来查询内存中的所有图像。但是,我只希望扫描一个特定的目录,并显示其中的图像

几行代码部分满足了我的要求:

final String imagesDirectory = "/storage/sdcard0/DCIM/"
String selection = MediaStore.Images.Media.DATA + " LIKE '" + imagesDirectory + "%'";
cl = new CursorLoader(MultiImageChooserActivity.this, MediaStore.Images.Media.EXTERNAL_CONTENT_URI, img.toArray(new String[img.size()]), selection, null, null);
我在上面找到的代码的选择部分也是如此,但它也检索子目录中的所有图像,这是我不想要的。一种解决方案是检查
MediaStore.Images.Media.DATA
列中的斜杠是否与
imagesDirectory
中的斜杠数量相同,这应该可以:

imagesDirectory: /storage/sdcard0/DCIM/                   -> 4
/storage/sdcard0/DCIM/photo.jpg                           -> 4, direct child
/storage/sdcard0/DCIM/subdir/otherphoto.jpg               -> 5, in subdir
我发现在SQLite中,这样的查询应该可以工作(检查
/
的出现情况):

其中的
col
应该是
MediaStore.Images.Media.DATA
,但到目前为止,我已经尝试了许多不同的
选择
变体,但我还没有成功地过滤数据。既然你不能给
游标加载程序
一个
rawQuery
(就像
游标
),我也不能这样做

我尝试的另一件事是不使用
MediaStore.Images.Media.EXTERNAL\u CONTENT\u URI
作为内容URI,而是使用目录中的URI。所以我试了一下:

final String imagesDirectory = "/storage/sdcard0/DCIM/"
cl = new CursorLoader(MultiImageChooserActivity.this, 
    Uri.fromFile(new File(imagesDirectory)), 
    img.toArray(new String[img.size()]), null, null, null);
但是没有用,苏斯法

问题:如何使用
游标装入器查询目录中的所有图像,而不是其子目录?

对于SQLite、查询和
游标加载程序
,我不是英雄,所以这可以解释一点。此外,我也搜索过类似的问题,但在这个特定的主题上没有太多可找到的。甚至谷歌搜索目录游标加载程序也不能回答任何问题。大多数结果都是关于按目录排序的帖子


提前谢谢。

我使用了一个扩展子句成功地完成了它:

String where = "_data LIKE '/storage/sdcard0/DCIM/%' AND (SELECT LENGTH(_data) - LENGTH(REPLACE(_data, '/', ''))) = 4";
其中
/storage/sdcard0/DCIM/
是我的映像目录,
4
是映像目录名称中的斜杠数量。我在几个不同的目录上尝试过这个方法(并手动检查它们),它似乎工作得很好


我也会尝试pskinks方法(
像[dir]/%.jpg这样的数据和不像[dir]/%/%
)的数据),并报告结果。

它必须是游标加载程序吗?您使用的是什么库及其输入参数(uri、游标等)?@pskink是的,它必须是游标加载程序。我可以用游标来完成这个任务,但是我使用了一个GitHub项目,它使用了游标加载程序,所以我不能使用其他任何东西。画廊只是一个带有ImageView的GridView。参数显示在我的第一个代码块中(或者我理解不正确),请给我一个指向该github的链接project@pskink如果我是你,我会编写自定义ContentProvider,其中query()方法返回游标,gallery的游标加载程序可以使用该ContentProvider
String where = "_data LIKE '/storage/sdcard0/DCIM/%' AND (SELECT LENGTH(_data) - LENGTH(REPLACE(_data, '/', ''))) = 4";