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 文件中暴露组件的漏洞

Android Studio-manifest 合并失败

android新创建Activity是不是需要在Manifest文件中注册,如何进行注册

Android组件化开发(注意事项)