博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
FileProvider共享文件、缓存
阅读量:6231 次
发布时间:2019-06-21

本文共 1468 字,大约阅读时间需要 4 分钟。

如果本文帮助到你,本人不胜荣幸,如果浪费了你的时间,本人深感抱歉。 希望用最简单的大白话来帮助那些像我一样的人。如果有什么错误,请一定指出,以免误导大家、也误导我。 本文来自: 感谢您的关注。

在一个项目中突然看到了如下的代码,就很好奇这个东西是这么用的。然后搜了搜,也没发现什么讲这个东西的。

官方是这样说的 :FileProvider 是一个特殊的 ContentProvider 的子类,它使用 content:// Uri 代替了 file:/// Uri. ,更便利而且安全的为另一个app分享文件。

复制代码

官方也提供了一个非常简单的例子:

1. 在AndroidManifest.xml里面配置
...
复制代码

注意要添加权限 我们可以看到在<meta-data中,定义了一个资源路径,然后就是第二步

2.创建res/xml/filepaths.xml文件
复制代码

在这个文件中,为每个目录添加一个XML元素指定目录。 paths 可以添加多个子路径: 分享app内部的存储; 分享外部的存储; 分享内部缓存目录。(我遇到的就是分享的缓存)

其中属性的意思: path=“images/” 就是你所要共享的文件路径。 name="myimages" 就是告诉FileProvider 用 myimages 添加进URIs 内容字段去访问 files/images/ 的子目录。

3.然后就可以通过URI访问app 的文件了
content://com.example.myapp.fileprovider/myimages/default_image.jpg复制代码

可以看到: com.example.myapp.fileprovider:前面是我们在AndroidManifest.xml中指定的; myimages:是我们指定的 name; default_image.jpg:就是我们想要访问的图片了。

例如,我看到到这个项目,分享的是缓存路径下的图片,然后用Uri让系统的壁纸来打开自己项目的图片。

//得到缓存路径的Uri        Uri contentUri = FileProvider.getUriForFile(getActivity(), "com.android.ted.gank.fileprovider", file);        //壁纸管理的意图        Intent intent = WallpaperManager.getInstance(getActivity()).getCropAndSetWallpaperIntent(contentUri);        //开启一个Activity显示图片,可以将图片设置为壁纸。调用的是系统的壁纸管理。        getActivity().startActivityForResult(intent, ViewerActivity.REQUEST_CODE_SET_WALLPAPER);复制代码

如果哪里有什么问题,请一定批评指正。

转载于:https://juejin.im/post/5c00cc0c6fb9a049fd0f92ad

你可能感兴趣的文章
估计一些物品的质量_大部分物流运输管理中心都会派送的物品里应用了rfid
查看>>
分数的大小比较优秀教案_20分钟如何写好教师资格证面试教案?
查看>>
纵向取模需要自己倒叙吗_婚后的女人需要努力吗?看完这四点,每个人都会有自己的答案...
查看>>
导入公用方法_销售明细导入开票模块的产品思考
查看>>
主从切换_SpringBoot 多数据源配置+动态数据源切换+多数据源事物配置实现主从数据库存储分离...
查看>>
变形 圆形_「Photoshop教程」使用变形工具和扭曲滤镜实现极坐标照片效果
查看>>
如何使用 mega unity_MEGA构建系统发育树,以及EvolView &amp; iTOL 的入门心得.
查看>>
华三交换机mode是什么意思_弱电工程师忘记了交换机和路由器的密码后如何处理?...
查看>>
2019 coling 论文列表_COLING2020-事件抽取/关系抽取/NER/少(零)样本 论文分类整理
查看>>
培养逻辑思维的app_数学逻辑思维app哪个好
查看>>
word加载外接程序出错_COM加载项的常见异常
查看>>
冒烟的意思_【冒烟】的意思是什么?【冒烟】是什么意思?
查看>>
os什么意思python_Python中import os是什么意思?
查看>>
初识python评课稿_GitHub - jingning42/ustc-course: USTC 评课平台
查看>>
html弄多个按钮_HTML表单上的多个提交按钮 - 将一个按钮指定为默认按钮
查看>>
django判断checkbox是否选中_django视图层之请求与响应
查看>>
group by 怎么用java对象接收_生产服务宕机,线上业务挂了!Promtheus 怎么又不报警了呢?...
查看>>
himawari-8卫星叶绿素a产品、_走过50年,看“风云”眼中的世界| 卫星看中国特别版...
查看>>
mybatis使用$报空指针_打破你的认知!Java空指针居然还能这样玩,90%人不知道…...
查看>>
windows mysql 重置root密码_在Windows下Mysql如何重置root用户密码
查看>>