title: Calling camera from an activity, capturing an image and uploading to a server
body: <p>In my app, I have a button1 which calls camera, and after capturing the image, it must be saved to the device gallery. When I click on button2, it must open the gallery, and ask to select a picture. When selected, it must be shown on the imageView below these buttons.</p>
  
  <p>Here is my code:</p>
  
  <pre><code>package com.android.imageuploading;
  
  import java.io.FileNotFoundException;
  import java.io.IOException;
  import java.io.InputStream;
  import java.util.List;
  
  import android.app.Activity;
  import android.content.Context;
  import android.content.Intent;
  import android.content.pm.PackageManager;
  import android.content.pm.ResolveInfo;
  import android.graphics.Bitmap;
  import android.graphics.BitmapFactory;
  import android.os.Bundle;
  import android.provider.MediaStore;
  import android.view.View;
  import android.widget.Button;
  import android.widget.ImageView;
  
  public class ImageUploadingActivity extends Activity {
      private static final int REQUEST_CODE = 1;
      private Bitmap bitmap;
      private ImageView imageView;
      private Button button_1;
      public int TAKE_PICTURE = 1;
      private Button button_2;
  
      /** Called when the activity is first created. */
      @Override
      public void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.main);
          imageView = (ImageView) findViewById(R.id.image);
          button_1 = (Button) findViewById(R.id.button1);
          button_1.setOnClickListener(new View.OnClickListener() {
  
              public void onClick(View v) {
  
                  Intent intent = new Intent("android.media.action.IMAGE_CAPTURE");
                  startActivityForResult(intent, TAKE_PICTURE);
  
              }
          });
          button_2 = (Button) findViewById(R.id.button2);
          button_2.setOnClickListener(new View.OnClickListener() {
  
              public void onClick(View v) {
  
                  pickImage(getCurrentFocus());
              }
          });
      }
  
      public void pickImage(View view) {
          Intent intent = new Intent();
          intent.setType("image/*");
          intent.setAction(Intent.ACTION_GET_CONTENT);
          intent.addCategory(Intent.CATEGORY_OPENABLE);
          startActivityForResult(intent, REQUEST_CODE);
      }
  
      @Override
      protected void onActivityResult(int requestCode, int resultCode, Intent data) {
          if (requestCode == REQUEST_CODE &amp;&amp; resultCode == Activity.RESULT_OK)
              try {
                  // We need to recyle unused bitmaps
                  if (bitmap != null) {
                      bitmap.recycle();
                  }
                  InputStream stream = getContentResolver().openInputStream(
                          data.getData());
                  bitmap = BitmapFactory.decodeStream(stream);
                  stream.close();
                  imageView.setImageBitmap(bitmap);
              } catch (FileNotFoundException e) {
                  e.printStackTrace();
              } catch (IOException e) {
                  e.printStackTrace();
              }
          super.onActivityResult(requestCode, resultCode, data);
      }
  
      public static boolean isIntentAvailable(Context context, String action) {
          final PackageManager packageManager = context.getPackageManager();
          final Intent intent = new Intent(action);
          List&lt;ResolveInfo&gt; list = packageManager.queryIntentActivities(intent,
                  PackageManager.MATCH_DEFAULT_ONLY);
          return list.size() &gt; 0;
      }
  }
  </code></pre>
  
  <p>The problem is, when I capture the image, it asks for save or discard. When I click on save, my app crashes, saying:</p>
  
  <blockquote>
    <p>java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=1, result=-1, data=Intent { act=inline-data (has extras) }} to activity {com.android.imageuploading/com.android.imageuploading.ImageUploadingActivity}: java.lang.NullPointerException</p>
  </blockquote>
  
  <p>Where do I need to change the code?</p>