title: Save image from Camera take picture intent to application private storage
body: <p>There is a lot of information here about how to create a file on external storage in android, pass the uri to ACTION_IMAGE_CAPTURE and then save the image there.</p>
  
  <p>However, I want to create a file in Application's private storage (sometimes referred to as internal storage) and pass that file uri to ACTION_IMAGE_CAPTURE but Camera intent returns RESULT_CANCELED in onActivityResult.</p>
  
  <p>What do I do?</p>
  
  <pre><code>private void checkWhetherCameraIsAvailableAndTakeAPicture() {
      // Check wether this device is able to take pictures
      if (PhotoHandler.isIntentAvailable(a, MediaStore.ACTION_IMAGE_CAPTURE)) {
          System.gc();
          Intent takePictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
          File imageFile = null;
  
          try {
                  if(a.application.user.isPublishImagesToGallery()){
                  imageFile = a.application.photoHandler.createImageFileOnExternalStorage();
              } else {
                  imageFile = a.application.photoHandler.createImageFileOnInternalStorage();
              }
  
              imagePath = imageFile.getAbsolutePath();
              takePictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(imageFile));
          } catch (IOException e) {
              e.printStackTrace();
              imageFile = null;
              imagePath = null;
          }
          startActivityForResult(takePictureIntent, Preferences.REQUEST_CODE_TAKE_IMAGE_WITH_CAMERA);
      } else { // Notify the user that their device is unable to take photos
          a.application.toastMaker.toastLong(ErrorMessages.DEVICE_UNABLE_TO_TAKE_PHOTOS);
      }
  } // End of checkWhetherCameraIsAvailableAndTakeAPicture
  
  public File createImageFileOnInternalStorage() throws IOException {
          return createTempFileOnGivenLocation();
      }
  
      private String imageFilename() {
          return filenamePrefix + Calendar.getInstance().getTimeInMillis();
      }
  
      private File createTempFileOnGivenLocation() throws IOException {
          File imageFile = File.createTempFile(imageFilename(), filenameSuffix, context.getFilesDir());
          setImagePathTemporary(imageFile.toString());
  
          return imageFile;
      }
  
  
  @Override
  public void onActivityResult(int requestCode, int resultCode, Intent data) {
      super.onActivityResult(requestCode, resultCode, data);
  
      if (requestCode == Preferences.REQUEST_CODE_TAKE_IMAGE_WITH_CAMERA) {
          if (resultCode != Activity.RESULT_CANCELED) {
              handlePhotoTakenWithCamera();
          } else {
              // ONACTIVITYRESULT Returns Here!
              new File(imagePath).delete())
          }
      } else if (requestCode == Preferences.REQUEST_CODE_PICK_IMAGES_FROM_GALLERY) {
          if (resultCode != Activity.RESULT_CANCELED) {
              handlePhotosPickedFromGallery(data);
          }
      }
  } // End of onActivityResult
  </code></pre>