Android(安卓)FileProvider的理解
参考资料:
http://www.jianshu.com/p/ba57444a7e69
http://blog.csdn.net/Chay_Chan/article/details/57083383
由于从Android7.0开始,直接使用真实的路径的Uri会被认为是不安全的,会抛出一个FileUriExposedException这样的异常。需要使用FileProvider,选择性地将封装过的Uri共享到外部。
由于FileProvider是继承ContentProvider,属于四大组件之一,需要在AndroidManifest.xml中配置,配置如下:
${applicationId}是获取当前项目的包名,前提是defaultConfig{}闭包中要有applicationId属性。
defaultConfig { applicationId "com.jimtrency.lh.weixinimageselector" minSdkVersion 14 targetSdkVersion 26 versionCode 1 versionName "1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"}
在res资源目录下新建xml文件下,在该文件夹下创建file_provider_paths.xml文件,这个xml文件名并不是一定要这么起,只要和清单文件中配置的文件名一致就行。
那,
下的字段都是什么意思呢?
//getFilesDir() (/data/data//files目录)
1.
//getCacheDir() (/data/data//cache目录)
2.
// Environment.getExternalStorageDirectory()
3.
// Context.getExternalFilesDir(String).
4.
// Context.getExternalCacheDir()
5.
path :代表设置的目录下一级目录
eg:
Environment.getExternalStorageDirectory()+”/images/”
上述代码中path=”“,是有特殊意义的,它代码根目录,也就是说你可以向其它的应用共享根目录及其子目录下任何一个文件了,如果你将path设为path=”pictures”, 那么它代表着根目录下的pictures目录(eg:/storage/emulated/0/pictures),如果你向其它应用分享pictures目录范围之外的文件是不行的。
更多相关文章
- android 仿微信多图选择器(带预览、照相功能)
- Android(安卓)Launcher 如何去掉主菜单,所有应用摆在桌面,类似小米
- android MultiDex
- Android(安卓)Property
- Android(安卓)studio创建assets目录并且利用webView加载html
- Android利用Jsoup解析html
- Android(安卓)Studio使用杂项
- android多线程断点续传
- ffmpeg 编译至android