lovetuzitong / MultiImageSelector

Deprecated -- Image selector for Android device. Support single choice and multi-choice.
MIT License
2.96k stars 801 forks source link

android.os.FileUriExposedException in android 7.0+ #124

Open daksheshvira opened 7 years ago

daksheshvira commented 7 years ago

Please solve this problem which is causing after the 7.0 release. In 7.0+ Uri.fromFile is not working and giving the error android.os.FileUriExposedException. This can be solved by changing Uri.fromFile to FileProvider.getUriForFile. The issue occurs when we are taking picture.

Below is the full error :

android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_1390008869.jpg exposed beyond app through ClipData.Item.getUri() at android.os.StrictMode.onFileUriExposed(StrictMode.java:1813) at android.net.Uri.checkFileUriExposed(Uri.java:2360) at android.content.ClipData.prepareToLeaveProcess(ClipData.java:832) at android.content.Intent.prepareToLeaveProcess(Intent.java:8957) at android.content.Intent.prepareToLeaveProcess(Intent.java:8942) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1583) at android.app.Activity.startActivityForResult(Activity.java:4228) at android.support.v4.app.BaseFragmentActivityJB.startActivityForResult(BaseFragmentActivityJB.java:50) at android.support.v4.app.FragmentActivity.startActivityForResult(FragmentActivity.java:79) at android.support.v4.app.ActivityCompatJB.startActivityForResult(ActivityCompatJB.java:30) 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:1047) at android.support.v4.app.Fragment.startActivityForResult(Fragment.java:959) at android.support.v4.app.Fragment.startActivityForResult(Fragment.java:948) at me.nereo.multi_image_selector.MultiImageSelectorFragment.showCameraAction(MultiImageSelectorFragment.java:321) at me.nereo.multi_image_selector.MultiImageSelectorFragment.access$400(MultiImageSelectorFragment.java:56) at me.nereo.multi_image_selector.MultiImageSelectorFragment$2.onItemClick(MultiImageSelectorFragment.java:162) at android.widget.AdapterView.performItemClick(AdapterView.java:310) at android.widget.AbsListView.performItemClick(AbsListView.java:1155) at android.widget.AbsListView$PerformClick.run(AbsListView.java:3146) at android.widget.AbsListView$3.run(AbsListView.java:4061) 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:6123) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:867) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:757)

umeitime commented 7 years ago

同样的错误啊。

dfana01 commented 6 years ago

Same error.

gdky005 commented 6 years ago

来一个简单粗暴的解决办法:

http://blog.csdn.net/huangxiaoguo1/article/details/52830015?locationNum=2&fps=1

在Application的onCreat()方法中添加以下代码:

       // android 7.0系统解决拍照的问题
        StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
        StrictMode.setVmPolicy(builder.build());
        builder.detectFileUriExposure(); 
dimoge commented 4 years ago

来一个简单粗暴的解决办法:

http://blog.csdn.net/huangxiaoguo1/article/details/52830015?locationNum=2&fps=1

在Application的onCreat()方法中添加以下代码:

       // android 7.0系统解决拍照的问题
        StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder();
        StrictMode.setVmPolicy(builder.build());
        builder.detectFileUriExposure(); 

亲测有效,Android Q