0

In fragment

 String action = "android.media.action.IMAGE_CAPTURE";
        try {
            Intent intent = new Intent(action);
            myPhotoFile = new File(myPhotoTempDir, "myphoto_" + System.currentTimeMillis());
            intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(myPhotoFile));
            getActivity().startActivityForResult(intent, TAKE_PHOTO);

this code success work in Android 6.0 But on Android 9 I get runtime error in this line:

getActivity().startActivityForResult(intent, TAKE_PHOTO);

error:

android.os.FileUriExposedException: file:///storage/emulated/0/myphoto_149ed0307b49eb17/myphoto_1562770175665 exposed beyond app through ClipData.Item.getUri()
    at android.os.StrictMode.onFileUriExposed(StrictMode.java:1996)
    at android.net.Uri.checkFileUriExposed(Uri.java:2378)
    at android.content.ClipData.prepareToLeaveProcess(ClipData.java:963)
    at android.content.Intent.prepareToLeaveProcess(Intent.java:10425)
    at android.content.Intent.prepareToLeaveProcess(Intent.java:10410)
    at android.app.Instrumentation.execStartActivity(Instrumentation.java:1744)
    at android.app.Activity.startActivityForResult(Activity.java:4781)
    at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:676)
    at android.app.Activity.startActivityForResult(Activity.java:4721)
    at androidx.fragment.app.FragmentActivity.startActivityForResult(FragmentActivity.java:663)
    at com.myproject.profile.EditProfileFragment.takePhoto(EditProfileFragment.java:489)
Alex
  • 1,857
  • 4
  • 17
  • 34

0 Answers0