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);// 查问到此结束,而后就能够依据本人的逻辑进行操作了