如何解决我想从图库中加载所有图像,但是当我调用cursor.moveToFirst时,光标返回false
我的代码:
public void loadImageFromStorage(Context context,Activity activity){
Uri uri=null;
Uri uriExternal= MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
int colIndexId;
///////////////////////////////////////////////////
Cursor cursor=getContentResolver().query(uriExternal,null,null);
//////////////////////////////////////////////////
if(cursor!=null){
colIndexId=cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
int noOfRows=cursor.getCount();
boolean isFirstRow=cursor.moveToFirst();
do
{
uri= ContentUris.withAppendedId(uriExternal,cursor.getLong(colIndexId));
imageUri.add(uri);
}while(cursor.moveToNext());
cursor.close();
ImageAdapter imageAdapter=new ImageAdapter(this,imageUri,getContentResolver());
gridView.setAdapter(imageAdapter);
}}
在我的代码中
cursor.getCount()返回0,cursor.moveToFirst()返回false(这意味着指向我的光标的表包含0行)。此时,我的代码无法正常工作。我使用了正确的Mediastore uri,但仍然无法从图库中获取图像。我不知道我在这里想念什么吗? 最近几天我一直在面对这个问题,但仍然无法解决。
请帮助我解决这个问题。
预先感谢
解决方法
再试一次。考虑到您需要具有读取权限:android.permission.READ_EXTERNAL_STORAGE。因此,除了将其包含在清单中之外,您还需要请求获得授予。
public void loadImageFromStorage(final Context context){
final Uri source = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;
final Cursor cursor = context.getContentResolver().query(source,null,null);
if (cursor != null && cursor.moveToFirst()) {
final int columnId = cursor.getColumnIndexOrThrow(MediaStore.Images.Media._ID);
final List<Uri> list = new ArrayList<>();
do {
final long mediaId = cursor.getLong(columnId);
final Uri uri= Uri.withAppendedPath(source,Long.toString(mediaId));
list.add(uri);
} while(cursor.moveToNext());
final ImageAdapter imageAdapter = new ImageAdapter(this,list,context.getContentResolver());
gridView.setAdapter(imageAdapter);
}
if (cursor != null)
cursor.close();
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。