1.在Application的onCreate()添加:
//解决Uri.fromFile报错 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.N) { StrictMode.VmPolicy.Builder builder = new StrictMode.VmPolicy.Builder(); StrictMode.setVmPolicy(builder.build()); }
2.通过提供FileProvider解决问题:
具体实现:
2.1定义开放的文件目录:res/xml/provider_paths.xml
<?xml version="1.0" encoding="utf-8"?> <paths xmlns:android="http://schemas.android.com/apk/res/android"> <external-path name="external_files" path="."/> </paths>开放sd的所有存储路径
2.2在配置文件添加:application节点下添加
<provider android:name="android.support.v4.content.FileProvider" android:authorities="包名.provider" android:exported="false" android:grantUriPermissions="true"> <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/provider_paths" /> </provider>经过以上配置,在代码中使用Uri ,可通过以下方法获取
Uri uri = FileProvider.getUriForFile(activity,authorities,file);