【发布时间】:2017-09-06 18:20:11
【问题描述】:
我已经在我的 Android 应用中实现了设备相机功能。它在我测试过的所有设备上都运行良好。现在我收到了来自使用 Pixel XL 的用户的崩溃报告。
Pixel XL 从 onActivityResult 获取位图有什么变化吗?
我的代码:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if (requestCode == AppConstants.ACTION_REQUEST_CAMERA && resultCode == Activity.RESULT_OK) {
if(data != null) {
if(data.getData()!=null) {
try {
if (bitmap != null) {
bitmap.recycle();
}
InputStream stream = getContentResolver().openInputStream(data.getData());
bitmap = BitmapFactory.decodeStream(stream);
stream.close();
setCircularBitmap(bitmap);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
} else {
bitmap = (Bitmap) data.getExtras().get("data");
setCircularBitmap(bitmap);
}
} else {
LogUtils.debug("path",initialURI.getEncodedPath());
bitmap = getBitmapFromUri(initialURI);
setCircularBitmap(bitmap);
Toast.makeText(EditProfileActivity.this, "path " + initialURI.getEncodedPath(), Toast.LENGTH_SHORT).show();
}
isProfileImageUpdated = true;
super.onActivityResult(requestCode, resultCode, data);
} else if (requestCode == AppConstants.ACTION_REQUEST_GALLERY && resultCode == Activity.RESULT_OK) {
if(data != null) {
Uri selectedImage = data.getData();
bitmap = getBitmapFromUri(selectedImage);
setCircularBitmap(bitmap);
} else {
LogUtils.debug("path", "Gallery Data null");
}
isProfileImageUpdated = true;
super.onActivityResult(requestCode, resultCode, data);
}
}
第一个条件是设备相机,第二个条件是图库。而且我也实现了运行时权限。
在这一行发生了崩溃:
bitmap = (Bitmap) data.getExtras().get("data");
Pixel XL 有什么遗漏的吗?没有找到任何指向 Pixel XL 的帖子。
编辑: 崩溃报告:
java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1025, result=-1, data=Intent { }} to activity {com.paramsolutions.leadshare/com.paramsolutions.leadshare.activity.EditProfileActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.os.BaseBundle.get(java.lang.String)' on a null object reference
at android.app.ActivityThread.deliverResults(ActivityThread.java:4089)
at android.app.ActivityThread.handleSendResult(ActivityThread.java:4132)
at android.app.ActivityThread.-wrap20(ActivityThread.java)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1533)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6119)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
Caused by: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object android.os.BaseBundle.get(java.lang.String)' on a null object reference
at com.paramsolutions.leadshare.activity.EditProfileActivity.onActivityResult(EditProfileActivity.java:323)
at android.app.Activity.dispatchActivityResult(Activity.java:6932)
at android.app.ActivityThread.deliverResults(ActivityThread.java:4085)
行号指向上述行,我的是Moto G4 Plus,也是7.0。我没有那个问题。 Pixel XL 有什么不同吗?
【问题讨论】:
-
你遇到的崩溃是什么?
-
@MohammedAtif 编辑了问题。
标签: android bitmap android-camera