title: Android; BitmapFactory.decodeFile(file) returns null, file is known to exists
body: <p>I am attempting to render a photo I have taken with the following class, which returns the used file:</p>
  
  <pre><code>public File takePhoto(){
      Intent pictureIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
      File destination= null;
      try {
          destination = createFile();
      } catch (IOException error) {
          Log.v(TAG, "IO error, reading exception");
          String errorMessage = error.getMessage();
          Log.v(TAG, errorMessage);
          String errorCauseMessage = error.getCause().getMessage();
         Log.v(TAG, errorCauseMessage);
      }
      if (destination != null){
          Log.v(TAG, "destination was written");
          pictureIntent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(destination));
          parentActivity.startActivityForResult(pictureIntent, REQUEST_TAKE_PHOTO);
          Log.v(TAG, "destination was: " + destination.getAbsolutePath());
      }
      else {
          Log.v(TAG, "destination was not written");
      }``
      return destination;
  </code></pre>
  
  <p>The result is then used in the following code:</p>
  
  <pre><code>Log.v(TAG, "adding picture");
              PhotoHandler photoHandler = new PhotoHandler(getPackageManager(), PolishCreateActivity.this);
              File imgFile = photoHandler.takePhoto();
              if (imgFile == null) {
                  Toast.makeText(this, ERROR_TOAST_TEXT, Toast.LENGTH_SHORT).show();
              } else {
                  Log.v(TAG, "Picture added");
  
                  Log.v(TAG, "storing directory");
                  img = imgFile.getAbsolutePath();
                  Log.v(TAG, "Directory stored");
  
                  Log.v(TAG, "Displaying picture");
                  LinearLayout layout = (LinearLayout) findViewById(R.id.rootLayout);
                  if (imageViewExists == Boolean.TRUE) {
                      ImageView oldView = (ImageView) findViewById(R.id.imageViewID);
                      layout.removeView(oldView);
                  }
                  UIHelper uiHelper = new UIHelper(this.getApplicationContext());
                  ImageView imageView = uiHelper.getImageViewFromPath(imgFile);
                  imageView.setId(R.id.imageViewID);
                  layout.addView(imageView);
                  imageViewExists = Boolean.TRUE;
                  Log.v(TAG, "picture displayed");
  </code></pre>
  
  <p>And passed to this method, as imgFile:</p>
  
  <pre><code>public ImageView getImageViewFromPath(File imgFile) {
      ImageView imageView = new ImageView(context);
      Bitmap imgBM = null;
      if (imgFile.exists()) {
          Log.v(TAG, "image file exists");
          imgBM = BitmapFactory.decodeFile(imgFile.getAbsolutePath());
          if (imgBM == null){
              Log.v(TAG, "Bitmap returned was null");
          }
      }
      imageView.setImageBitmap(imgBM);
      imageView.setLayoutParams(new ViewGroup.LayoutParams(ViewGroup.LayoutParams.MATCH_PARENT, ViewGroup.LayoutParams.WRAP_CONTENT));
      Log.v(TAG, "ImageView was created");
      return imageView;
  }
  </code></pre>
  
  <p>The problem is that BitmapFactory.decodeFile(imgFile.getAbsolutePath) returns every time I run it, even though the file exists (I can tell because I'm getting the log messages in the "if (imgFile.exists())" body). I have searched for a solution for a long time, but I have not found a solution. I have tested that it is not causing an outOfMemory exception, which it is not. Any help would be appreciated.</p>