Android:FileProvider冲突解决

1.问题

在android系统6.0以上的系统对权限的管理越来越严格了,特别是存储权限,需要通过FileProvider来读写文件,或许很多朋友像我一样都遇到过主工程与lib库的provider冲突,导致工程无法编译,错误信息如下:

image.png

2.原因分析

在主工程manifest文件中引用了FileProvider:

image.png

同样在lib库的manifest文件中也引用了FileProvider:

image.png

编译器在编译工程合并manifest文件时候就抛出了provider冲突问题,显而易见是其中的authrities冲突了。

在as的log日志里和在网上查找资料都是说在主工程的manifest文件里的provider下加上tools:replace就能成功解决问题。加上后,看似确实编译通过了,但是在主工程或者lib库用到FileProvider读写文件的时候还是报错了,各种修改manifest文件也没能解决这个问题。

3.解决方法

其实一想,我们在应用中用的都是v4包提供的FileProvider类来读写文件的,从而导致冲突,如果我们自己在工程中新写个FileProvider类继承自系统的FileProvider类来读写文件不就问题解决了么?带着这个想法一试,果然成功了。皇天不负有心人呐!下面是所有的代码片段:

image.png
image.png
image.png

上面这种做法有种好处就是不用将lib库下载下来然后修改lib库里的provider了,lib库里还是可以用原来的provider。

到此就结束了,如果你觉得这篇文章对你有用,那么赞一个或者留个言吧~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 180,000评论 25 708
  • 用两张图告诉你,为什么你的 App 会卡顿? - Android - 掘金 Cover 有什么料? 从这篇文章中你...
    hw1212阅读 14,408评论 2 59
  • 关于Mongodb的全面总结 MongoDB的内部构造《MongoDB The Definitive Guide》...
    中v中阅读 32,383评论 2 89
  • 蒋伟(化名)是我的前同事,PHP工程师,日照人,在青岛读的大学,毕业后就到了北京工作。前几年大家一直都在说逃离北上...
    马虎眼阅读 1,590评论 14 17
  • 不要小瞧那朵 大清早爬上你窗棂的喇叭花 在消逝的喑夜里 一定有它攀爬的痕迹 这个 满天星辉都知道 不要在意 那些尘...
    九月流云阅读 514评论 3 9

友情链接更多精彩内容