title: Android ACTION_IMAGE_CAPTURE intent crashes before returning to app
body: <p>I'm trying to receive the URI of an image taken via the Mediastore.ACTION_IMAGE_CAPTURE intent, but for some reason the default camera app (Google+) crashes before it even gets back to my activity and before my code reaches onActivityResult(). I suspect it has something to do with the way i'm crafting the intent, but i'm not sure. Here's my code:</p>
  
  <pre><code>alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "New", new DialogInterface.OnClickListener() {
          @Override
          public void onClick(DialogInterface dialog, int which) {
              Intent takePictureIntent = new Intent(android.provider.MediaStore.ACTION_IMAGE_CAPTURE);
              startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
          }
      });
  </code></pre>
  
  <p>If requested I can also add my onActivityResult code, though I'm not sure it's relevant here.</p>
  
  <p>Here's the data from logcat:</p>
  
  <blockquote>
    <p>12-02 10:47:43.976  26437-26437/? E/AndroidRuntime﹕ FATAL EXCEPTION:
    main
        Process: com.google.android.apps.plus, PID: 26437
        java.lang.IllegalArgumentException: A source URI must be specified via the Intent's data field.
                at dot.a(PG:185)
                at com.google.android.apps.photoeditor.fragments.PlusCropActivity.onCreate(PG:93)
                at android.app.Activity.performCreate(Activity.java:5933)
                at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
                at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
                at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
                at android.app.ActivityThread.access$800(ActivityThread.java:144)
                at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
                at android.os.Handler.dispatchMessage(Handler.java:102)
                at android.os.Looper.loop(Looper.java:135)
                at android.app.ActivityThread.main(ActivityThread.java:5221)
                at java.lang.reflect.Method.invoke(Native Method)
                at java.lang.reflect.Method.invoke(Method.java:372)
                at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:899)
                at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)</p>
  </blockquote>
  
  <p>Is this because of the way im launching the intent? Is there a way to keep this intent from trying to crop the photo, as im handling cropping in a separate intent?</p>
  
  <p><strong>Solution (I edited the code submitted by OferM):</strong></p>
  
  <pre><code>try
  {
        tempFile = File.createTempFile("my_app", ".jpg");
  
        File storageDir = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
        File image = File.createTempFile("my_app", ".jpg",storageDir);
        uri = Uri.fromFile(image);
  }catch(Exception e){}
  
  alertDialog.setButton(AlertDialog.BUTTON_POSITIVE, "New", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
            takePictureIntent.putExtras(getIntent().getExtras());
            takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, uri);
            startActivityForResult(takePictureIntent, REQUEST_IMAGE_CAPTURE);
        }
  });
  </code></pre>