美文网首页
FileProvider使用(安卓7.0以上使用)

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

作者: 程序猿的小生活 | 来源:发表于2018-08-24 11:36 被阅读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>
    
               有什么不足的地方欢迎大家提出来,共同进步!

    相关文章

      网友评论

          本文标题:FileProvider使用(安卓7.0以上使用)

          本文链接:https://www.haomeiwen.com/subject/iijbiftx.html