Android 调用库后,游标返回空结果
我正在做一个应用程序,我需要打开一个图库并选择一张图片,但当我返回到活动时,项目的光标返回null 在这里,我打开了图库:Android 调用库后,游标返回空结果,android,gallery,Android,Gallery,我正在做一个应用程序,我需要打开一个图库并选择一张图片,但当我返回到活动时,项目的光标返回null 在这里,我打开了图库: private static final int SELECT_PICTURE = 1; private void abrirGaleria(){ Intent intent = new Intent(); intent.setType("image/*"); intent.setAction(Intent.ACTI
private static final int SELECT_PICTURE = 1;
private void abrirGaleria(){
Intent intent = new Intent();
intent.setType("image/*");
intent.setAction(Intent.ACTION_GET_CONTENT);
startActivityForResult(Intent.createChooser(intent,"Select a pic"), SELECT_PICTURE);
}
在这里,我尝试得到以下结果:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == ((Activity)ctx).RESULT_OK){
Uri selectedImageURI = data.getData();
File filePath = new File(getRealPathFromURI(selectedImageURI));
compartilharAFoto(filePath.getPath());
}
}
private String getRealPathFromURI(Uri contentURI) {
Cursor cursor = ((Activity)ctx).getContentResolver().query(contentURI, null, null, null, null);
if (cursor == null) { // Source is Dropbox or other similar local file path
return contentURI.getPath();
} else {
//cursor.moveToFirst();
int idx = cursor.getColumnIndex(MediaStore.Images.ImageColumns.DATA);
return cursor.getString(0);//idx);
}
}
错误是:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=131073, result=-1, data=Intent { dat=content://com.android.providers.media.documents/document/image:1633 flg=0x1 }} to activity {br.com.blacktoad.q48h2/br.com.blacktoad.q48h2.MainActivity}: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
出现另一个错误说明:
Caused by: android.database.CursorIndexOutOfBoundsException: Index -1 requested, with a size of 1
您的查询没有您试图访问的列。 替换: 与: 并将此行更新如下:
int idx = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
和取消注释:
cursor.moveToFirst();
@用户1697583请参阅更新的答案。列从
ImageColumns.Data
更改为Media.Data
它应该是:if(cursor.moveToFirst()){two statement}否则{抱歉,没有行返回null;}
。使用idx!不是0。
int idx = cursor.getColumnIndex(MediaStore.Images.Media.DATA);
cursor.moveToFirst();