android N FileProvider使用方法

来源:互联网 发布:会计特点 知乎 编辑:程序博客网 时间:2024/06/01 08:43

自从小米平板3发布之后,很多客户反应我们的APP升级时,下载进度到了97%左右就停止了,无任何响应。经过排查,其实下载下来的安装包是完整的,在静默安装时失败了,UI没来得及更新。安装失败的原因是: Android7.0新增了应用间共享文件FileProvider,我们的安装包保存在SD卡目录上,安装时读取文件失败;需要通过FileProvider读取文件才能正常安装。

FileProvider继承于ContentProvider,可以使文件共享时更安全。以前使用 file:///Uri,那么现在可以用content://Uri来替换。

定义FileProvider
在mainifest中注册,新增<provider>标签元素。

  • 设置name属性和指定的值,android.support.v4.content.FileProvider。
  • 设置authorities,一般由你的包名+fileprovider构成,保证唯一性。
  • 设置exported为false。禁止跟其他应用交互。
  • 设置grantUriPermission为true,授予文件访问权限。


指定可使用文件
一个FilerProvider只能为你预先指定的文件目录产生一个content URI。如何指定文件域和文件路径呢?
创建资源文件,res/xml/provider_path.xml。


注意,<path>必须包含一个或者多个子元素。

  • files-path:代表APP的内部存储,类似Context.getFileDirs()目录中的文件
  • cache-path:代表APP内部存储中缓存目录下的文件。类似,getCacheDir()
  • external-files:代表外部存储的根目录。类似,Enviroment.getExternalStorageDirectory()
  • external-files-path:代表APP的外部存储根目录。类似,Context#getExternalFileDir(String).  Context.getExternalFileDir(null).
  • external-cache-path:代表APP外部缓存根目录。类似,Context.getExternalCacheDir()


将指定的文件目录引用到注册文件中。


配置成功,如何调用
根据系统版本判别,低于Android N的版本,仍然采用Uri.formUri(file)。而N版本或是以上版本是这样调用的,FileProvider.getUriForFile(mContext,getPackageName()+".fileprovider",file)
最后以APP安装示例结束FileProvider的基本使用方法。


原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 哈罗单车冻结了怎么办 百度云账号违规怎么办 百度外卖被冻结怎么办 公司账户被冻结怎么办 app账号被限制怎么办 微信号限制登录怎么办 微信被永久封了怎么办 储蓄卡被冻结怎么办 百度云qq登录怎么办 微信发红包忘记密码怎么办 电脑wps表格打不开怎么办 电脑wps文字打不开怎么办 电脑的wps打不开怎么办 qq锁异地登录怎么办 手机玩游游戏太热怎么办 运动秀注册不了怎么办 应用卸载不掉怎么办 aweme卸载不掉怎么办 win10系统安装失败怎么办 英雄联盟自动更新失败怎么办 英雄联盟老出错怎么办? lol下载0kb怎么办 手机md5校验失败怎么办 王者荣耀占内存怎么办 信用卡被暂停使用怎么办 宝宝爱涂鸦怎么办呢 大良老板欠薪怎么办 投影仪流明很低怎么办 户外涂鸦没有墙怎么办 word突然未响应怎么办 文档突然未响应怎么办 pr不自己播放怎么办 笔记本电脑空格键打字失灵怎么办 小孩受凉打喷嚏流鼻涕怎么办 头疼打喷嚏流鼻涕鼻塞怎么办 头疼打喷嚏想吐怎么办 感冒鼻塞头疼打喷嚏怎么办 孕期打喷嚏漏尿怎么办 孕妇打喷嚏漏尿怎么办 打喷嚏停不下来怎么办 鼻炎不停的打喷嚏怎么办