java - 在 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"
不工作。
解决方案
您的扫描库的作者需要阅读我 2017 年的这篇博文。
由于他们没有,您需要自己采取这些步骤:
创建一个平凡的子类
FileProvider
<provider>
在您的元素中使用该子类
这将为您提供功能,同时避免FileProvider
与库发生冲突。
推荐阅读
- html - 在透明导航栏下方显示网站背景
- centos - 当我查看 freeswitch 日志时,会看到以下错误
- go - 反向绑定的缺失样本申请
- c# - 如何在 WCF 应用程序中配置应用程序端以与预配置的 ADFS 服务器进行 SSL 连接?
- c++ - 如何同步多个 esp8266?
- terraform - 如何在 terraform 中回滚到以前的状态
- variables - 使用concat()动态调用参数,选择元素名称
- spring-boot-admin - Spring Boot Admin:自定义标头身份验证
- mongodb - 如何修复“无法识别的表达式 $round”,同时使用 mongodb $and 条件和 $lookup 将其应用于管道中的存储数据
- sql-server - 将动态参数传递给 SQL