Android BroadcastReceiver未捕获INSTALL\u Referer广播

Android BroadcastReceiver未捕获INSTALL\u Referer广播,android,broadcastreceiver,referrer,Android,Broadcastreceiver,Referrer,我创建了一个应用程序,它有一个BroadcastReceiver,可以捕获INSTALL\u referer广播 当我用eclipse安装应用程序并用adb创建广播时,我发现一切正常,LogCat显示了它应该显示的所有内容。 但是当我从play store安装应用程序时,logcat上没有显示任何内容。 如果我理解正确的话,play store应用程序应该创建一个广播,而正在安装的应用程序应该能够捕获,对吗 基本上我就是这么做的: public class SDK_Referrer extend

我创建了一个应用程序,它有一个BroadcastReceiver,可以捕获
INSTALL\u referer
广播

当我用eclipse安装应用程序并用adb创建广播时,我发现一切正常,LogCat显示了它应该显示的所有内容。 但是当我从play store安装应用程序时,logcat上没有显示任何内容。 如果我理解正确的话,play store应用程序应该创建一个广播,而正在安装的应用程序应该能够捕获,对吗

基本上我就是这么做的:

public class SDK_Referrer extends BroadcastReceiver
{
    public void onReceive(Context context, Intent intent)
    {
        if (intent.getAction().equals("com.android.vending.INSTALL_REFERRER"))
        {
            String referrer = intent.getStringExtra("referrer");
            if (!(referrer == null || referrer.length() == 0))
            {
                // extracting the relevant data to Map
                Log.d("SAMPLE", "Generating Ymid from referrel");
                Map<String, String> referralmap = 
                    createHashMapFromQueryString(referrer);
                Log.d("SAMPLE", "Ymid is: " + referralmap.get("ymid"));
            }
        }
    }
}
公共类SDK\u引用扩展广播接收器
{
公共void onReceive(上下文、意图)
{
if(intent.getAction().equals(“com.android.vending.INSTALL\u referer”))
{
字符串referer=intent.getStringExtra(“referer”);
如果(!(referer==null | | referer.length()==0))
{
//提取要映射的相关数据
Log.d(“示例”,“从referel生成Ymid”);
地图参考地图=
createHashMapFromQueryString(referer);
Log.d(“SAMPLE”,“Ymid是:”+referralmap.get(“Ymid”));
}
}
}
}
我只想在安装应用程序时向服务器发送一些信息。
谢谢

你需要将接收者添加到你的清单中,这样你的应用程序就知道你在收听广播。大概是这样的:

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