Working with cameras, I have a option that lets users take photos as well as browse photos from their gallery. The image is then loaded in the app screen. The problem I am having currently is with the take photos option.
The take photos option works well on devices with KitKat
but other than that it is a disaster.
The code is the following:
takePhoto.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// file to save the image
fileUri = getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
// set the image file name
intent.putExtra(MediaStore.EXTRA_OUTPUT, fileUri);
startActivityForResult(intent, TAKE_PICTURE);
}
Where the getOutputMediaFileUri function is similar to the code here.
and on the onActivityResult()
method:
if (requestCode == TAKE_PICTURE) {
if (resultCode == activity.RESULT_OK) {
String path = fileUri.getPath().toString();
previewImage(path);
try {
getPictureDetails(path);
} catch (FileNotFoundException e) {
//TODO Auto-generated catch block
e.printStackTrace();
}
}
Error log:
11-29 14:42:12.750: E/AndroidRuntime(18570): FATAL EXCEPTION: main
11-29 14:42:12.750: E/AndroidRuntime(18570): java.lang.RuntimeException: Unable to resume activity {com.developmentcheck.dcforpublic/com.developmentcheck.dcforpublic.MainActivity}: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=262344, result=-1, data=null} to activity {com.developmentcheck.dcforpublic/com.developmentcheck.dcforpublic.MainActivity}: java.lang.NullPointerException
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2658)
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:2686)
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2159)
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3595)
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.app.ActivityThread.access$800(ActivityThread.java:146)
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1266)
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.os.Handler.dispatchMessage(Handler.java:99)
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.os.Looper.loop(Looper.java:137)
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.app.ActivityThread.main(ActivityThread.java:4949)
11-29 14:42:12.750: E/AndroidRuntime(18570): at java.lang.reflect.Method.invokeNative(Native Method)
11-29 14:42:12.750: E/AndroidRuntime(18570): at java.lang.reflect.Method.invoke(Method.java:511)
11-29 14:42:12.750: E/AndroidRuntime(18570): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1043)
11-29 14:42:12.750: E/AndroidRuntime(18570): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:810)
11-29 14:42:12.750: E/AndroidRuntime(18570): at dalvik.system.NativeStart.main(Native Method)
11-29 14:42:12.750: E/AndroidRuntime(18570): Caused by: java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=262344, result=-1, data=null} to activity {com.developmentcheck.dcforpublic/com.developmentcheck.dcforpublic.MainActivity}: java.lang.NullPointerException
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.app.ActivityThread.deliverResults(ActivityThread.java:3224)
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:2645)
11-29 14:42:12.750: E/AndroidRuntime(18570): ... 13 more
11-29 14:42:12.750: E/AndroidRuntime(18570): Caused by: java.lang.NullPointerException
11-29 14:42:12.750: E/AndroidRuntime(18570): at com.developmentcheck.dcforpublic.Fragment_comment.onActivityResult(Fragment_comment.java:358)
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.support.v4.app.FragmentActivity.onActivityResult(FragmentActivity.java:166)
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.app.Activity.dispatchActivityResult(Activity.java:5369)
11-29 14:42:12.750: E/AndroidRuntime(18570): at android.app.ActivityThread.deliverResults(ActivityThread.java:3220)
11-29 14:42:12.750: E/AndroidRuntime(18570): ... 14 more
The error occurs in the following line:
String path = fileUri.getPath().toString();