广播INSTALL_REFERRER意图

时间:2015-03-24 18:14:36

标签: android android-intent google-analytics

问题是我无法在接收器中获得推荐人uri。 在清单文件中,我有类似的东西:

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

Adb广播命令:

adb shell am broadcast -a com.android.vending.INSTALL_REFERRER 
-n app/app.InstallReceiver --es "referrer" "utm_source=testSource&utm_medium=testMedium&utm_term=testTerm&utm_content=testContent&utm_campaign=testCampaign"

在InstallReceiver类中:

@Override
public void onReceive(Context context, Intent intent) {
   Uri uri = intent.getData(); // getting uri is null
   String referrer = intent.getStringExtra("referrer");
   // referrer is only contains "utm_source=testSource" and no more

所以问题在于完整的推荐人以及我的意图有什么不对。

1 个答案:

答案 0 :(得分:7)

您的intent广播引荐来源值未正确设置。该值将由shell调用adb进行一次转义,并由执行广播命令的Android shell再次转义。尝试发送这样的请求:

adb shell am broadcast -a com.android.vending.INSTALL_REFERRER -n app/app.InstallReceiver --es referrer "'utm_source=testSource&utm_medium=testMedium&utm_term=testTerm&utm_content=testContent&utm_campaign=testCampaign'"

请注意双重转义 - 一次使用单引号',一次使用双引号“