android7.0uri,android7.0 通过FileProvider获取uri
android7.0以后,使用Uri.fromFile会报FileUriExposedException异常,这是因为android7.0以后执行了更加严格的文件管理,要解决这一错误需要使用7.0新添加的FileProvide类,
FileProvider使用步骤:
1、注册一个FileProvider
在manifest里面定义一个FileProvider:
...
...
...
...
name直接使用系统的android.support.v4.content.FileProvider,如果需要自己继承FileProvider,则在这里写自己的FileProvider,一定要写全名,即:包名+类名。exported设置为false,即FileProvider不需要共享,grantUriPermissions设置为true,即允许获取临时读取uri的权限。
2、指定可用文件
在res资源文件夹下建立xml文件夹,在xml文件夹下创建一名为file_paths的资源文件:
paths元素必须包含以下一个或者多个子元素:
files-path 对应目录Context.getFilesDir()
cache-path 对应目录Context.getCacheDir()
external-path 对应目录Environment.getExternalStorageDirectory()
external-files-path 对应目录Context,getExternalFilesDir(String) 或者Context.getExternalFilesDir(null)
external-cache-path 对应目录Context.getExternalCacheDir()。
这一点要谨记,在后面创建文件时会用到。
name 是分享的文件路径的一部分,它会覆盖要分享的真实的路径,即path指定的路径。 后续生成 content:// URI 时,会使用这个别名代替真实目录名。这样做的目的,很显然是为了提高安全性
path 属性用于指定当前子元素所代表目录下需要共享的子目录名称。注意:path 属性值不能使用具体的独立文件名,只能是目录名。
意味着路径下的全部文件
然后在第一步的provider中引用这个资源文件:
3、生成Uri
首先创建文件:
File fiil = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+“/kgh/res”);
接下来,生成Uri:
Uri contentUri = FileProvider.getUriForFile(getContext(), "com.kgh.test.fileprovider", fiil);
getUriForFile方法中的第二个参数要与第一步中在manifest文件里面创建的provider里面的android:authorities名称一样
在file-path中使用name为beta_external_files_path ;
正常路径:/storage/emulated/0/kgh/res/c.apk
uri路径:content://com.kgh.test.fileprovider/beta_external_files_path/c.apk
显然路径被name覆盖了 增强了安全性
android7.0uri,android7.0 通过FileProvider获取uri相关推荐
- android7.0 通过FileProvider获取uri
android7.0以后,使用Uri.fromFile会报FileUriExposedException异常,这是因为android7.0以后执行了更加严格的文件管理,要解决这一错误需要使用7.0新添 ...
- android 调用相机并获取图片地址,Android 7.0使用FileProvider获取相机拍照的图片路径...
这里主要是基于Android 7.0,Nougat 实现一个获取相机拍照的图片后,使用FileProvider把图片转换为实际的路径. 首先需要在AndroidManifest.xml声明调用相机的权 ...
- (Android7.0)Android获取PID、TID、UID
注:文章可能完全摘录,参考或完全自创,如有摘录或参考,会在文章最下面备注参考资料的地址(而不一定是原始文章的地址).如有版权问题,请及时告知. 文章目的在于整理分享本人学到的知识,可能会有错误或表达不 ...
- android调用相机与相册的方法,手把手教你:android调用系统相机、相册功能,适配6.0权限获取以及7.0之后获取URI(兼容多版本)...
Android中调用系统相机来拍摄照片的代码,以下:html 一.首先设置Uri获取判断以及相机请求Codejava public final int TYPE_TAKE_PHOTO = 1;//Ur ...
- Android 7.0 适配 FileProvider相机 相册 裁剪的使用
Android7.0又加了一些新的东西,例如多窗口 通知栏发消息 等等,但是这些是一些功能的改变,可以说是很炫的进步,而我要说的是FileProvider这个杀千刀的Api,先来看一下官方解释: 上面 ...
- android uri获取参数,android-无法从深度链接获取Uri数据
我想从浏览器重定向到我的应用程序,因此我在清单中为我的活动使用以下代码: android:host="book" /> //接受以" fivos:// book&q ...
- android 获取uri的正确文件路径的办法
有时会从其他的文件浏览器获取路径,这时根据路径去数据库取文件时会发现不成功,原因是由于android的文件浏览器太多,各自返回的路径不统一,而android本身的数据库中的路径是绝对路径,即" ...
- android系统通过图片绝对路径获取URI的三种方法
老马的技术博客 android系统通过图片绝对路径获取URI的三种方法 最近做项目要通过图片的绝对路径找到图片的URI,然后删除图片,小小总结一下获取URI的方法,亲自试验在 android 4.1. ...
- android+6.0+通讯录,Android6.0的通讯录获取
在Android Studio上实现基于Android6.0的通讯录获取功能 1.新建一个Android项目,API选择23: Android6.0(Marshmallow) 2.在MainActiv ...
最新文章
- XHProf的安装和使用(PHP性能测试神器)
- 微信小程序界面跳转(2)——按钮
- flask html新增,如何在script里修改flask传入html的变量?
- 为什么不用ZK来做服务发现?
- oracle 窗口函数 (keep)
- render_template 网页模板
- 谷歌中巨大的 SEO 骗局!排名靠前的 HTML 编辑器也不可信
- dotnetNuke module development steps, dnn 模块开发步骤
- 启动tomcat时 错误: 代理抛出异常 : java.rmi.server.ExportException: Port already in use: 1099的解决办法
- 解读《美国国家BIM标准》 – BIM能力成熟度模型(十二)
- HTML页面调用打印机打印pdf文件
- Invalid bound statement (not found): com.zheng.mapper.UserMapper.login
- 生命是一个苦旅,我们都在路上
- 语音信号的时域处理(二)
- 直播预告 | 双十一电商风控怎么破,看这场直播就对了!
- 开发手札:Unity与Android交互(Unity2019+)
- 石油公路工程都在用的光纤测试仪是什么型号
- 飞思卡尔微控制与MSCAN ----自学笔记
- 分享154个ASP源码,总有一款适合您
- 最大熵模型及GIS算法