MultiImageSelector
MultiImageSelector copied to clipboard
Android N下拍照报错
10-08 14:15:10.443 12103-12103/moe.tlaster.openween E/AndroidRuntime: FATAL EXCEPTION: main Process: moe.tlaster.openween, PID: 12103 android.os.FileUriExposedException: file:///storage/emulated/0/DCIM/IMG_1650562883.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:8909) at android.content.Intent.prepareToLeaveProcess(Intent.java:8894) at android.app.Instrumentation.execStartActivity(Instrumentation.java:1517) 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:75) at android.support.v4.app.ActivityCompatJB.startActivityForResult(ActivityCompatJB.java:31) at android.support.v4.app.ActivityCompat.startActivityForResult(ActivityCompat.java:169) at android.support.v4.app.FragmentActivity.startActivityFromFragment(FragmentActivity.java:934) at android.support.v4.app.FragmentActivity$HostCallbacks.onStartActivityFromFragment(FragmentActivity.java:1043) at android.support.v4.app.Fragment.startActivityForResult(Fragment.java:951) at android.support.v4.app.Fragment.startActivityForResult(Fragment.java:940) 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:3126) at android.widget.AbsListView$3.run(AbsListView.java:4041) 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)
这是安卓7.0所增加的权限机制所导致的。
楼上说错了,6.0开始加上的。
6.0增加的是动态权限申请。7.0增加了更多的权限机制,或者说增强。
1st of all: Thanks for your lib, man! It throws this exception on Android API >=24. Maybe somebody will find it helpful https://inthecheesefactory.com/blog/how-to-share-access-to-file-with-fileprovider-on-android-nougat/en
来一个简单粗暴的解决办法:
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();