0
点赞
收藏
分享

微信扫一扫

【2022/01/27】MediaStore模糊查询、分页、排序

MediaStore模糊查询、分页、排序

【2022/01/27】MediaStore模糊查询、分页、排序_MediaStore


安卓10以上就有了分区存储的概念,相关的查询就有了一些改变,下面我们介绍一下​​MediaStore​​经常使用的查询。


常用的查询项:

  1. ​QUERY_ARG_LIMIT​​:查询条数
  2. ​QUERY_ARG_OFFSET​​:数据偏移量
  3. ​QUERY_ARG_SORT_DIRECTION​​:排序方向,也就是正序还是倒序
  4. ​QUERY_ARG_SORT_COLUMNS​​:排序字段
  5. ​QUERY_ARG_SQL_SELECTION​​:where语句

实际例子,page和limit需要全局定义

// 需要查询的资源
Uri uri = MediaStore.Files.getContentUri("external");

// 需要查询的字段,根据display_name模糊查询,size大于0的,date_modified倒序
String[] columns = {
MediaStore.Files.FileColumns.DISPLAY_NAME,
MediaStore.Files.FileColumns.SIZE,
MediaStore.Files.FileColumns.DATE_MODIFIED
};

// where条件
String where = "(_display_name like '%.png' or _display_name like '%.jpg') and _size > 0";

// 组装查询
Bundle select = new Bundle();
// 偏移量,也就是从第几条开始查询 page是页码,limit是每页数量,根据逻辑自行修改
int start = (page - 1) * limit;
select.putInt(ContentResolver.QUERY_ARG_LIMIT, limit);
select.putInt(ContentResolver.QUERY_ARG_OFFSET, start);

// 排序方向,倒序
select.putInt(ContentResolver.QUERY_ARG_SORT_DIRECTION, ContentResolver.QUERY_SORT_DIRECTION_DESCENDING);
select.putStringArray(ContentResolver.QUERY_ARG_SORT_COLUMNS, new String[]{MediaStore.Files.FileColumns.DATE_MODIFIED});

// where条件
select.putString(ContentResolver.QUERY_ARG_SQL_SELECTION, where.toString());

// 这个query方法参数是4个
Cursor cursor = getActivity().getContentResolver().query(uri, columns, select, null);

// 查询到此结束,然后就可以根据自己的逻辑进行操作了


举报

相关推荐

0 条评论