0

将 google play 服务更新到 7.0.3 后,我的自定义 INSTALL_REFERRER 广播接收器坏了。我使用 CampaignTrackingService(也获得了更新)将意图转发给谷歌分析。

在 AndroidManifest.xml 中

    <receiver
        android:name="myapp.analytics.installReferrer.InstallReferrerBroadcastReceiver"
        android:exported="true">
        <intent-filter>
            <action android:name="com.android.vending.INSTALL_REFERRER" />
        </intent-filter>
    </receiver>

还有我的自定义广播接收器(这是问题所在):

    public class InstallReferrerBroadcastReceiver extends BroadcastReceiver{

private final static String TAG = InstallReferrerBroadcastReceiver.class.getSimpleName();
@Override
public void onReceive(Context context, Intent intent) {
    // Send to Different Analytics services

    // Send to Google Analytics
    CampaignTrackingService campaignTrackingService = new CampaignTrackingService();
    // I used onHandleIntent() in google-play services 7.0.0, in 7.3.0 its gone
    campaignTrackingService.onHandleIntent(intent);
    }
}
4

1 回答 1

1

尝试扩展 CampaignTrackingReceiver 而不是 BroadcastReceiver。然后在你的 onReceive 方法中调用 super.onReceive(context, intent); 您也正在从接收方调用服务。Analytics 提供 CampaignTrackingService 和 CampaignTrackingReceiver。当您提供自己的接收器实施时,您应该将调用传递给 Analytics CampaignTrackingReceiver.onReceive,而不是直接调用服务。Android 保证您的应用程序进程在您从 onReceive 返回之前不会被杀死,但应用程序进程可能会在服务启动之前被杀死,您将失去活动。分析提供的接收器将正确地切换到服务以避免此问题(它需要部分唤醒锁定权限)。

于 2015-05-13T20:28:05.503 回答