앱 사용자로부터 보고서가 왔습니다.
Caused by를 보니 널포인트익셉션이 났습니다.
java.lang.RuntimeException: Unable to resume activity {com.app.sports/com.app.sports.CustomFullActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} to activity {com.app.sports/com.app.sports.CustomFullActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2642)
at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2670)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2140)
at android.app.ActivityThread.access$700(ActivityThread.java:140)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4946)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1036)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:803)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=2, result=-1, data=Intent { (has extras) }} to activity {com.app.sports/com.app.sports.CustomFullActivity}: java.lang.NullPointerException
at android.app.ActivityThread.deliverResults(ActivityThread.java:3208)
at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2629)
... 12 more
Caused by: java.lang.NullPointerException
at com.app.sports.CustomFullActivity.onActivityResult(CustomFullActivity.java:980)
at android.app.Activity.dispatchActivityResult(Activity.java:5390)
at android.app.ActivityThread.deliverResults(ActivityThread.java:3204)
... 13 more
그 코드를 보아하니 아래와 같습니다.
File f = new File(mImageCaptureUri.getPath()); /****에러***/
사진 찍거나 불러오는 코드인데 사용자는 갤 3였구요.
이런 보고서는 처음인데 어떻게 하다가 이런 현상이 발생됐는지 알 수도 없구요.
의심할 만한 상황이 어떤게 있나요?
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data)
{
if(resultCode != RESULT_OK)
{
return;
}
switch(requestCode)
{
case CROP_FROM_CAMERA:
{
// 크롭이 된 이후의 이미지를 넘겨 받습니다.
// 이미지뷰에 이미지를 보여준다거나 부가적인 작업 이후에
// 임시 파일을 삭제합니다.
final Bundle extras = data.getExtras();
if(extras != null)
{
Bitmap photo = extras.getParcelable("data");
mPhotoImageView.setImageBitmap(photo);
}
// 임시 파일 삭제
File f = new File(mImageCaptureUri.getPath()); /****에러***/
if(f.exists())
{
f.delete();
}
break;
}
case PICK_FROM_ALBUM:
{
// 이후의 처리가 카메라와 같으므로 일단 break없이 진행합니다.
// 실제 코드에서는 좀더 합리적인 방법을 선택하시기 바랍니다.
mImageCaptureUri = data.getData();
}
case PICK_FROM_CAMERA:
{
// 이미지를 가져온 이후의 리사이즈할 이미지 크기를 결정합니다.
// 이후에 이미지 크롭 어플리케이션을 호출하게 됩니다.
Intent intent = new Intent("com.android.camera.action.CROP");
intent.setDataAndType(mImageCaptureUri, "image/*");
intent.putExtra("outputX", 120);
intent.putExtra("outputY", 130);
intent.putExtra("aspectX", 1);
intent.putExtra("aspectY", 1);
intent.putExtra("scale", true);
intent.putExtra("return-data", true);
startActivityForResult(intent, CROP_FROM_CAMERA);
break;
}
}
}