title: Android camera intent FileUriExposedException for SDK >= 24
body: <p>I use this code to get a picture from camera and put it on imageview:</p>
  
  <pre><code>  private void openCamera()
  {
      mMediaUri =getOutputMediaFileUri(MEDIA_TYPE_IMAGE);
  
      Intent photoIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
      photoIntent.putExtra(MediaStore.EXTRA_OUTPUT, mMediaUri);
      startActivityForResult(photoIntent, REQUEST_TAKE_PHOTO);
     // dialog.dismiss();
  
  
  }
  
  
  private Uri getOutputMediaFileUri(int mediaTypeImage)
  {
      //check for external storage
      if(isExternalStorageAvaiable())
      {
          File mediaStorageDir = getActivity().getExternalFilesDir(Environment.DIRECTORY_PICTURES);
  
          String fileName = "";
          String fileType = "";
          String timeStamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new java.util.Date());
  
          fileName = "IMG_"+timeStamp;
          fileType = ".jpg";
  
          File mediaFile;
          try
          {
              mediaFile = File.createTempFile(fileName,fileType,mediaStorageDir);
              Log.i("st","File: "+Uri.fromFile(mediaFile));
          }
          catch (IOException e)
          {
              e.printStackTrace();
              Log.i("St","Error creating file: " + mediaStorageDir.getAbsolutePath() +fileName +fileType);
              return null;
          }
          return Uri.fromFile(mediaFile);
      }
      //something went wrong
      return null;
  
  }
  
  private boolean isExternalStorageAvaiable()
  {
      String state = Environment.getExternalStorageState();
  
      if(Environment.MEDIA_MOUNTED.equals(state))
      {
          return true;
      }
      else
      {
          return false;
      }
  }
  
   public void onActivityResult(int requestCode, int resultCode, Intent data)
  {
      super.onActivityResult(requestCode, resultCode, data);
  
      if(resultCode == DIALOG_CODE)
      {
          String s = data.getStringExtra("choose");
  
          if(s.equals(getString(R.string.takephoto)))
          {
            openCamera();
          }
          else if(s.equals(getString(R.string.library)))
          {
           // openGallery();
          }
      }
      else if(resultCode == RESULT_OK)
      {
          if (requestCode == REQUEST_TAKE_PHOTO || requestCode == REQUEST_PICK_PHOTO) //dalla fotocamera
          {
              if (data != null)  //caso galleria
              {
                  mMediaUri = data.getData();
              }
  
  
              Picasso.with(getActivity()).load(mMediaUri).resize(1280, 1280).centerCrop().into(photo, new Callback()
              {
                  public void onSuccess()
                  {
  
  
                  }
  
                  @Override
                  public void onError() {
  
                  }
              });
          }
      }
  }
  </code></pre>
  
  <p>in Marshmallow it works ok, but in Nougat I got this error:</p>
  
  <pre><code>E/AndroidRuntime: FATAL EXCEPTION: main
                PID: 15471
                android.os.FileUriExposedException: file:///storage/emulated/0/Android/data/com.plen.myapp/files/Pictures/IMG_20161214_1516561294620205.jpg exposed beyond app through ClipData.Item.getUri()
                    at android.os.StrictMode.onFileUriExposed(StrictMode.java:1799)
                    at android.net.Uri.checkFileUriExposed(Uri.java:2346)
                    at android.content.ClipData.prepareToLeaveProcess(ClipData.java:832)
                    at android.content.Intent.prepareToLeaveProcess(Intent.java:8925)
                    at android.content.Intent.prepareToLeaveProcess(Intent.java:8910)
                    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1519)
                    at android.app.Activity.startActivityForResult(Activity.java:4224)
                    at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:48)
                    at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:77)
                    at android.support.v4.app.ActivityCompatJB.startActivityForResult(ActivityCompatJB.java:26)
                    at android.support.v4.app.ActivityCompat.startActivityForResult(ActivityCompat.java:146)
                    at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:937)
                    at android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:1046)
                    at android.support.v4.app.Fragment.startActivityForResult(Fragment.java:956)
                    at android.support.v4.app.Fragment.startActivityForResult(Fragment.java:945)
                    at com.plen.myapp.MyAircrafts.AddAircraftFirstPartFragment.openCamera(AddAircraftFirstPartFragment.java:263)
                    at com.plen.myapp.MyAircrafts.AddAircraftFirstPartFragment.askReadStorage(AddAircraftFirstPartFragment.java:338)
                    at com.plen.myapp.MyAircrafts.AddAircraftFirstPartFragment.askWriteStorage(AddAircraftFirstPartFragment.java:355)
                    at com.plen.myapp.MyAircrafts.AddAircraftFirstPartFragment.loadNewPhoto(AddAircraftFirstPartFragment.java:159)
                    at com.plen.myapp.MyAircrafts.AddAircraftFirstPartFragment.access$000(AddAircraftFirstPartFragment.java:48)
                    at com.plen.myapp.MyAircrafts.AddAircraftFirstPartFragment$1.onClick(AddAircraftFirstPartFragment.java:75)
                    at android.view.View.performClick(View.java:5609)
                    at android.view.View$PerformClick.run(View.java:22266)
                    at android.os.Handler.handleCallback(Handler.java:751)
                    at android.os.Handler.dispatchMessage(Handler.java:95)
                    at android.os.Looper.loop(Looper.java:154)
                    at android.app.ActivityThread.main(ActivityThread.java:6077)
                    at java.lang.reflect.Method.invoke(Native Method)
                    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:865)
                    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:755)
  </code></pre>
  
  <p>how could I solve this error? I've searched solutions but no one works.</p>
  
  <p>Thanks</p>