如何解决范围存储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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。