美文网首页
使用Fileprovide 出现的问题

使用Fileprovide 出现的问题

作者: 程序员阿兵 | 来源:发表于2018-12-04 14:49 被阅读0次

我们知道在android7.0,修改了对私有存储的限制,导致在获取资源的时候,不能通过Uri.fromFile(..)来获取uri了,但是在写入数据的时候是可以通过Uri.fromFile(..)来获取uri的,android 官网给出的解决办法是通过FileProvider来解决这一问题,我们需要在AndroidManifest.xml 配制provider节点。

<provider
    android:name="android.support.v4.content.FileProvider"
    android:authorities="${applicationId}.fileProvider"
    android:exported="false"
    android:grantUriPermissions="true"
    tools:replace="android:authorities">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths"
        tools:replace="android:resource"/>
</provider>

其中,provider_paths.xml如下所示:

<?xml version="1.0" encoding="utf-8"?>
<paths xmlns:android="http://schemas.android.com/apk/res/android">
    <!-- /storage/emulated/0/Download/${applicationId}/.beta/apk-->
    <external-path name="beta_external_path" path="Download/"/>
    <!--/storage/emulated/0/Android/data/${applicationId}/files/apk/-->
    <external-path name="beta_external_files_path" path="Android/data/"/>
</paths>

但是此时我们项目中可能会用到其他一些第三方sdk,为了适配7.0权限也加了fileprovider,此时就会出现冲突问题 : Manifest merger failed,解决这个问题就需要自定义 FileProvide :

第一步:

自定义fileprovider继承fileprovider


image.png

第二步:

自定义xml :千万注意filepath指向的路径也是自定义的,不要和初始file_paths相同


image.png

第三步:

在manidest 加入provider 注意authorities指向的报名是工程project的包名


image.png

相关文章

网友评论

      本文标题:使用Fileprovide 出现的问题

      本文链接:https://www.haomeiwen.com/subject/wqimcqtx.html