解决Android 7.0及以上系统Uri.fromFile获取Uri报错问题

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_31028313/article/details/80085505

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);


猜你喜欢

转载自blog.csdn.net/qq_31028313/article/details/80085505
今日推荐