1.在manifest配置provider
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="xxx.xxx.FileProvider"http://可以隨便配置,但必須與后面調(diào)用一致即可
android:exported="false"http://只限本項(xiàng)目使用權(quán)限
android:grantUriPermissions="true">//允許權(quán)限
<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/" />//代表設(shè)備的根目錄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時(shí)候調(diào)用
Uri uri = null;
if (Build.VERSION.SDK_INT >= 24) {
intent.addCategory(Intent.CATEGORY_DEFAULT);
intent.addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION);//請(qǐng)求權(quán)限
uri = FileProvider.getUriForFile(context, "xxx.xxx.FileProvider", file);
}else {
uri = Uri.fromFile(file);
}
4.有的時(shí)候引入第三方的東西可能manifest配置和三方manifest配置有沖突,這時(shí)候可以自定義fileprovider
public class MyFileProvider extends FileProvider {//只需要繼承即可
}
5.manifest配置
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="xxx.xxx.MyFileProvider"http://可以隨便配置,但必須與后面調(diào)用一致即可
android:exported="false"http://只限本項(xiàng)目使用權(quán)限
android:grantUriPermissions="true">//允許權(quán)限
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/file_provider" /> //xml文件在res下配置
</provider>
有什么不足的地方歡迎大家提出來,共同進(jìn)步!