项目中的更新下载,图片拍照,如果是7.0以下,没有发现任何异常,但是到了7.0以上,你会发现,你大爷已经不是以前的你大爷了!怎么搞?FileProvider伺候上。。。。
FileProvider 是 ContentProvider 的子类,所以
1、需要在AndroidManifest 中进行注册,
AndroidManifest中的注册代码红框部分:applicationId是你的包名,包名配置在build.gradle(Module:app)的defaultConfig节点中。不写固定的包名,可以解决如果同一套代码,需要多渠道/多包名打包,不影响生成好的各个APK的安装。否则会提示:“安装失败,与已安装应用内容提供者冲突”。
设置name属性和指定的值,android.support.v4.content.FileProvider。
设置authorities,一般由你的包名+fileprovider构成,保证唯一性。
设置exported为false。禁止跟其他应用交互。
设置grantUriPermission为true,授予文件访问权限。
设置"android : resource" 属性设置为 @xml / file_paths_upload。需要对真实的 filepath 进行映射,所以需要编写一个 xml 文档,用于描述可使用的文件夹目录
2、资源文件夹下新建一个 xml 目录,里面包含一个文件file_paths_upload
file_paths_upload
3、安装apk文件
Android 7.0 禁止在应用外部公开 file:// URI,所以我们必须使用 content:// 替代 file://,这时主要需要 FileProvider 的支持,还需要动态申请访问SD卡目录的权限。
网友评论