FileProvider使用(安卓7.0以上使用)

1.在manifest配置provider

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="xxx.xxx.FileProvider"//可以随便配置,但必须与后面调用一致即可
            android:exported="false"//只限本项目使用权限
            android:grantUriPermissions="true">//允许权限
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_provider" /> //xml文件在res下配置
        </provider>

2.在res目录下新建xml文件夹,并建立file_provider.xml文件


```<?xml version="1.0" encoding="utf-8"?>

<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <external-path name="external" path="" />//代表的根目录: Environment.getExternalStorageDirectory()

   <!-- <files-path name="files" path="tongzhi/" />//代表的根目录: Context.getFilesDir()
    <root-path name="root" path="gentledownload/" />//代表设备的根目录new File("/");
   <files-path name="files" path="tongzhi/" />//代表的根目录: Context.getFilesDir()
  <cache-path name="cache" path="" />//代表的根目录: getCacheDir()

   <external-files-path name="external_files" path="" />//>代表的根目录: Context.getExternalFilesDir(String)
   <external-cache-path name="external_cache" path="" />//代表的根目录: Context.getExternalCacheDir()-->

</paths>

3.在需要用到uri时候调用

Uri uri = null;
        if (Build.VERSION.SDK_INT >= 24) {
intent.addCategory(Intent.CATEGORY_DEFAULT);
        intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//请求权限
            uri = FileProvider.getUriForFile(context, "xxx.xxx.FileProvider", file);
        }else {
            uri = Uri.fromFile(file);
        }

4.有的时候引入第三方的东西可能manifest配置和三方manifest配置有冲突,这时候可以自定义fileprovider

public class MyFileProvider extends FileProvider {//只需要继承即可

}

5.manifest配置

<provider
            android:name="android.support.v4.content.FileProvider"
            android:authorities="xxx.xxx.MyFileProvider"//可以随便配置,但必须与后面调用一致即可
            android:exported="false"//只限本项目使用权限
            android:grantUriPermissions="true">//允许权限
            <meta-data
                android:name="android.support.FILE_PROVIDER_PATHS"
                android:resource="@xml/file_provider" /> //xml文件在res下配置
        </provider>
           有什么不足的地方欢迎大家提出来,共同进步!
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容