【发布时间】:2015-01-04 06:14:39
【问题描述】:
我在清单合并与重复接收器时遇到问题,但内容不同。我将以下接收器用于不同的 API 级别,到目前为止没有问题,直到合并。由于合并导致构建失败
Element receiver#.receivers.UpdateReceiver duplicated with element declared at AndroidManifest.xml:124:9
我不想创建另一个接收器并继续使用此架构。有没有办法针对这些情况禁用合并或将接收器合并为一个,但可以选择启用具有不同意图的操作?
<receiver
android:name=".receivers.UpdateReceiver"
android:enabled="@bool/is_api_below_12">
<intent-filter>
<action android:name="android.intent.action.PACKAGE_REPLACED" />
<data android:scheme="package" />
</intent-filter>
</receiver>
<receiver
android:name=".receivers.UpdateReceiver"
android:enabled="@bool/is_api_12_and_above">
<intent-filter>
<action android:name="android.intent.action.MY_PACKAGE_REPLACED" />
</intent-filter>
</receiver>
【问题讨论】:
-
从未尝试过,但 1 个接收者标签中包含 2 个意图过滤器应该是合法的。
-
@GabeSechan 我需要“启用”属性,如果我们在意图过滤器中使用它会很棒。
-
严格来说你不需要——你总是可以让接收者的第一行来决定是否处理意图,如果不处理则退出。启用只是一种更好的方式。
-
你能提供一个样本吗?我假设我可以继续有意或完全忽略它?我猜在意图之间不会有选择。我也可能误解了你的说法。
-
是的——你可以检查你实际得到的意图,然后检查你想要启用的布尔值,并决定是处理意图还是忽略它。