首页 > 解决方案 > 在 2 个清单中允许 FileProvider 内容提供程序?

问题描述

我的应用清单中有这个:

<provider
    android:name="androidx.core.content.FileProvider"
    android:authorities="com.my.app"
    android:exported="false"
    android:grantUriPermissions="true">
    <meta-data
        android:name="android.support.FILE_PROVIDER_PATHS"
        android:resource="@xml/provider_paths"/>
</provider>

我还有一个扫描库,它的清单中也有它:

    <provider
        android:name="androidx.core.content.FileProvider"
        android:authorities="com.scanlibrary.provider"
        android:exported="false"
        android:grantUriPermissions="true">
        <meta-data
            android:name="android.support.FILE_PROVIDER_PATHS"
            android:resource="@xml/provider_paths"/>
    </provider>

问题是我收到此错误并且不知道如何解决:Manifest merger failed : Attribute provider#androidx.core.content.FileProvider@authorities value=(com.my.app) from AndroidManifest.xml:32:13-49 AndroidManifest.xml:32:13-59 value=(com.scanlibrary.provider). Suggestion: add 'tools:replace="android:authorities"' to <provider> element at AndroidManifest.xml:30:9-38:20 to override.

如何让这 2 个提供者一起工作?我也尝试 tools:replace="android:value"不工作。

标签: javaandroid

解决方案


您的扫描库的作者需要阅读我 2017 年的这篇博文

由于他们没有,您需要自己采取这些步骤:

  • 创建一个平凡的子类FileProvider

  • <provider>在您的元素中使用该子类

这将为您提供功能,同时避免FileProvider与库发生冲突。


推荐阅读