Android Manifest 中不能有多个 INSTALL_REFFERER 接收器
Posted
技术标签:
【中文标题】Android Manifest 中不能有多个 INSTALL_REFFERER 接收器【英文标题】:Cannot have more than one INSTALL_REFFERER receiver in Android Manifest 【发布时间】:2011-02-27 18:42:53 【问题描述】:我在我的 android 清单文件中使用 AdMob 安装接收器,例如
<!-- AdMob Install Receiver -->
<receiver android:name="com.admob.android.ads.analytics.InstallReceiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
不过,我也希望使用自己的 INSTALL_REFFERER 接收器。问题是,当我在 AdMob 之后添加自己的接收器时,它永远不会被调用。如果我在清单文件中的 AdMob 接收器之前包含我的,我的会被调用,但 AdMob 不会。
有没有我可以同时调用两者?
谢谢
【问题讨论】:
【参考方案1】:Android 应用不能有多个具有相同意图过滤操作的接收器。
像这样制作代理接收器:
在 AndroidManifest.xml 中:
<receiver android:name="com.example.app.TrackingReceiver" android: exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
在 TrackingReceiver.java 中:
public class TrackingReceiver extends BroadcastReceiver
@Override
public void onReceive(Context context, Intent intent)
// call AdMob tracker
com.google.ads.InstallReceiver ir = new com.google.ads.InstallReceiver();
ir.onReceive(context, intent);
// call Analytics tracker
com.google.android.apps.analytics.AnalyticsReceiver ar = new com.google.android.apps.analytics.AnalyticsReceiver();
ar.onReceive(context, intent);
【讨论】:
Android 应用可以有多个具有相同意图过滤操作的接收器;但是,com.android.vending.INSTALl_REFERRER 只会广播到单个接收器。这是developers.google.com/analytics/devguides/collection/android/v2/… 中记录的已知问题以上是关于Android Manifest 中不能有多个 INSTALL_REFFERER 接收器的主要内容,如果未能解决你的问题,请参考以下文章
Android : Manifest merger failed with multiple errors
Android : Manifest merger failed with multiple errors
如何修复 Android 中 Manifest.xml 文件中暴露组件的漏洞