范围存储android 10.0

问题描述

崩溃在这里......

android.database.sqlite.SQLiteException:在“ GROUP”附近:语法错误(Sqlite代码1 SQLITE_ERROR):,在编译时:从图像中选择_id,bucket_display_name,bucket_id,_id,方向((is_pending = 0)AND( is_trashed = 0)AND(volume_name IN('external_primary')))AND(((1)GROUP BY 1,(2))ORDER BY date_modified DESC,(OS错误-2:无此文件或目录) 在android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:184) 在android.database.DatabaseUtils.readExceptionFromParcel(DatabaseUtils.java:140) 在android.content.ContentProviderProxy.query(ContentProviderNative.java:423) 在android.content.ContentResolver.query(ContentResolver.java:955) 在android.content.ContentResolver.query(ContentResolver.java:891) 在android.content.ContentResolver.query(ContentResolver.java:840)

下面是显示所有文件夹或图像相册的方法。

private boolean logGalleryFolders() {
        this.albumList = new ArrayList<>();
        List<Integer> bucketIdList = new ArrayList<>();
        Cursor cur = this.context.getContentResolver().query(Media.EXTERNAL_CONTENT_URI,new String[]{"_id","bucket_display_name","bucket_id","_id","orientation"},"1) GROUP BY 1,(2",null,"date_modified DESC");

        List<GridViewItem> items;
        int i;
        if (cur == null || !cur.moveToFirst()) {
            items = new ArrayList<>();
            for (i = 0; i < this.albumList.size(); i++) {
                items.add(new GridViewItem(this.activity,this.albumList.get(i).name,BuildConfig.FLAVOR + this.albumList.get(i).imageIdList.size(),true,this.albumList.get(i).imageIdForThumb,this.albumList.get(i).orientationList.get(0).intValue()));
            }
            this.albumList.add(new Album());
            this.albumList.get(this.albumList.size() - 1).gridItems = items;
            for (i = 0; i < this.albumList.size() - 1; i++) {
                this.albumList.get(i).gridItems = createGridItemsOnClick(i);
            }

            if (cur != null) {
                cur.close();
            }
            return true;
        }
        int bucketColumn = cur.getColumnIndex("bucket_display_name");
        int bucketId = cur.getColumnIndex("bucket_id");
        int imageId = cur.getColumnIndex("_id");
        int orientationColumnIndex = cur.getColumnIndex("orientation");
        do {
            Album album = new Album();
            int id = cur.getInt(bucketId);
            album.ID = id;
            if (bucketIdList.contains(id)) {
                Album albumFromList = this.albumList.get(bucketIdList.indexOf(album.ID));
                albumFromList.imageIdList.add(cur.getLong(imageId));
                albumFromList.orientationList.add(cur.getInt(orientationColumnIndex));
            } else {
                String bucket = cur.getString(bucketColumn);
                bucketIdList.add(id);
                album.name = bucket;
                album.imageIdForThumb = cur.getLong(imageId);
                album.imageIdList.add(album.imageIdForThumb);
                this.albumList.add(album);
                album.orientationList.add(cur.getInt(orientationColumnIndex));
            }
        } while (cur.moveToNext());
        items = new ArrayList<>();
        for (i = 0; i < this.albumList.size(); i++) {
            items.add(new GridViewItem(this.activity,this.albumList.get(i).orientationList.get(0).intValue()));
        }
        this.albumList.add(new Album());
        this.albumList.get(this.albumList.size() - 1).gridItems = items;
        for (i = 0; i < this.albumList.size() - 1; i++) {
            this.albumList.get(i).gridItems = createGridItemsOnClick(i);
        }
        cur.close();
        return true;
    }

下面是崩溃线……

Cursor cur = this.context.getContentResolver().query(Media.EXTERNAL_CONTENT_URI,"date_modified DESC");

解决方法

只需像下面这样更改查询:

来自

 Cursor cur = this.context.getContentResolver().query(Media.EXTERNAL_CONTENT_URI,new String[]{"_id","bucket_display_name","bucket_id","_id","orientation"},"1) GROUP BY 1,(2",null,"date_modified DESC");

Cursor cur = this.context.getContentResolver().query(Media.EXTERNAL_CONTENT_URI,"date_modified DESC");
,

您的GROUP BY位于And的内部,从而引起了问题。请如下更改您的query

SELECT
  _id,bucket_display_name,bucket_id,_id,orientation
FROM
  images
WHERE
  (
    (is_pending = 0)
    AND (is_trashed = 0)
    AND (volume_name IN ('external_primary'))
  )
  AND ((1))
GROUP BY
  1,(2)
ORDER BY
  date_modified DESC

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...