Android媒体库使用分组查询
在Android中使用ContentResolver查询媒体库时是没有Group by参数的,但是可以追加在where参数中。
例如查询按文件夹查询图片,并且查询每个文件夹下面的图片数量
final String selection = "1=1) group by ([bucket_id]";
final String[] projection = new String[]{
"count([_id])",
"bucket_display_name"};
Cursor c = getContentResolver().query(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
projection,
selection, null, null);
while (c.moveToNext() ) {
Log.e("haha", c.getString(2) + ":"+c.getInt(0));
}
c.close();
主要是注意系统会为where语句添加一对小括号,即where ( … ) , 跟上面的”)(“拼接成两对小括号 ,最后拼接成的Sql语句为:
SELECT count([_id]), bucket_id, bucket_display_name FROM images WHERE (1=1) group by ([bucket_id])