我正在开发一个应用程序,要求用户从库中选择一张照片并将其设置为 Profiles 图片 . 现在,以下代码在大多数设备上都能正常工作(我已经检查了摩托罗拉Moto G,One plus X,MI 4i和其他一些设备) . 每当我在redmi prime上运行它时,它会给出一个错误,如下所示:
堆栈跟踪
进程:com.example.lordvoldemort.imagepicker,PID:23291 java.lang.RuntimeException:传递结果失败ResultInfo {who = null,request = 1,result = -1,data = Intent {dat = file:/// storage /emulated/0/DCIM/Camera/IMG_20160807_003845_HDR.jpg typ = image / jpeg}} to activity {com.example.lordvoldemort.imagepicker / com.example.lordvoldemort.imagepicker.MainActivity}:java.lang.NullPointerException:尝试调用在android.app.ActivityThread.handleSendResult(ActivityThread.java:3638)的android.app.ActivityThread.deliverResults(ActivityThread.java:3595)上的空对象引用上的接口方法'boolean android.database.Cursor.moveToFirst()'at android.app.ActivityThread.access $ 1300(ActivityThread.java:154)在Android.app.Handler.dispatchMessage(Handler.java:102)的android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1366) . os.Looper.loop(Looper.java:135)在android.app.ActivityThread.main(ActivityThread.java:5290)java.lang.reflect.Method.invoke(Native Method)在java.lang.reflect.Method.invoke(Method.java:372)的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:908)at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:703)引起:java.lang.NullPointerException:尝试在com.example.lordvoldemort.imagepicker.MainActivity.onActivityResult上的空对象引用上调用接口方法'boolean android.database.Cursor.moveToFirst()' (MainActivity.java:104)在Android.app.ActivityThread.deleverResult(ActivityThread.java:3591)的android.app.ActivityThread.handleSendResult(ActivityThread.java:)中的android.app.Activity.dispatchActivityResult(Activity.java:6241) 3638)在Android.app.Handler.dispatchMessage(Handler.java:102)的android.app.ActivityThread.access $ 1300(ActivityThread.java:154)android.app.ActivityThread $ H.handleMessage(ActivityThread.java:1366)在android.os.Looper.loop(Looper.java:135)的android.app.ActivityThread.main(ActivityThread.java:5290)java.lang.reflect.Method.invoke(Native Me)在com.android.internal.os.ZygoteInit的com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:908)的java.lang.reflect.Method.invoke(Method.java:372)上 . . 主要(ZygoteInit.java:703)
我在ActivityResult上使用的代码 -
Uri selectedImage = data.getData();
String[] filePathColumn = { MediaStore.Images.Media.DATA };
Cursor cursor = getContentResolver()
.query(selectedImage, filePathColumn, null,
null, null);
assert cursor != null;
cursor.moveToFirst();
int columnIndex = cursor
.getColumnIndex(filePathColumn[0]);
String filePath = cursor.getString(columnIndex);
cursor.close();
newbitmap = BitmapFactory.decodeFile(filePath);
ImageView ivImage = (ImageView)findViewById(R.id.image);
ivImage.setImageBitmap(newbitmap);
public String getPathFromURI(Uri contentUri) {
String res = null;
String[] proj = {MediaStore.Images.Media.DATA};
Cursor cursor = getContentResolver().query(contentUri, proj, null, null, null);
if (cursor.moveToFirst()) {
int column_index = cursor.getColumnIndexOrThrow(MediaStore.Images.Media.DATA);
res = cursor.getString(column_index);
}
cursor.close();
return res;
}
错误是 - 尝试在空对象引用上调用接口方法'boolean android.database.Cursor.moveToFirst()'