在启动应用程序之前未收到INSTALL_REFERRER

时间:2015-02-04 12:57:22

标签: android android-intent broadcastreceiver android-broadcast

我想在我自己的接收器上捕获INSTALL_REFERRER意图。 我实现了接收器

public class InstallReferrerReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
           Log.d("Broadcast", "RECEIVED!");
        }
}

并在Manifest中添加

<receiver
    android:name=".receiver.InstallReferrerReceiver"
    android:exported="true">
    <intent-filter>
        <action android:name="com.android.vending.INSTALL_REFERRER"/>
    </intent-filter>
</receiver>

当我想测试接收器时,我安装我的应用程序(不是启动)并通过adb发送广播

am broadcast -a com.android.vending.INSTALL_REFERRER --es "referrer" "utm_medium=partner&utm_campaign=partner_name"

但是看不到任何日志。在lounch之后,它正常工作并接受意图。

来自&#34;测试Google Play广告系列衡量标准&#34;

  

将INSTALL_REFERRER意图广播到您的应用程序:

     
      
  1. 验证您的应用程序当前是否正在运行。
  2.   
  3. 打开终端并运行以下命令:...
  4.   

但在我第一次启动应用程序之前,我的接收器没有收到意图。这是正确的行为吗?如果我使用referrer params从市场安装应用程序,我会收到此意图吗?

由于

1 个答案:

答案 0 :(得分:1)

发送Intent.FLAG_INCLUDE_STOPPED_PACKAGES时必须设置标志broadcastintent

Bundle extras = new Bundle();
extras.putString("referrer", referrer);
Intent intent = new Intent("com.android.vending.INSTALL_REFERRER");
intent.putExtras(extras);
intent.setPackage(packageChanged);
intent.addFlags(Intent.FLAG_INCLUDE_STOPPED_PACKAGES);
sendBroadcast(intent);