内容解析器(android)如何使用limit和offset来限制数据?

问题描述 投票:0回答:1
 Uri uri = android.provider.MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
 String[] projection = {MediaStore.MediaColumns._ID, MediaStore.MediaColumns.SIZE, MediaStore.Images.ImageColumns.DATE_MODIFIED};

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
                        Bundle bundle = new Bundle();
                         // Sort function
                        bundle.putStringArray(
                                ContentResolver.QUERY_ARG_SORT_COLUMNS,
                                new String[]{MediaStore.Images.ImageColumns.DATE_MODIFIED}
                        );
                        bundle.putInt(
                                ContentResolver.QUERY_ARG_SORT_DIRECTION,
                                ContentResolver.QUERY_SORT_DIRECTION_DESCENDING
                        );
                        bundle.putInt(ContentResolver.QUERY_ARG_LIMIT, limit);
                        bundle.putInt(ContentResolver.QUERY_ARG_OFFSET, offset);
                        cursor = this.getContentResolver().query(uri, projection, bundle, null);
                    } else {
                        cursor = this.getContentResolver().query(uri, projection,
                                null, null
                                , MediaStore.MediaColumns.DATE_MODIFIED + " DESC " + " LIMIT " + limit + " OFFSET " + offset, null);

                    }

我正在使用此查询来获取受限制和偏移限制的图像。尽管无论如何,这总是返回 4546 的游标计数。这意味着数据完全不受限制并且查询无法正常工作。

android database android-contentprovider mediastore android-contentresolver
1个回答
0
投票

更新:您需要在将 uri 传递给游标之前添加它。

Uri queryUri = 
uri.buildUpon().encodedQuery("limit="+offset+","+limit).build();

// now pass uri                        
cursor = this.getContentResolver().query(queryUri, projection, bundle, null);
© www.soinside.com 2019 - 2024. All rights reserved.