Get referrer after installing app from Android Market
I am trying to register a Broadcast Receiver that catches "com.android.vending.INSTALL_REFERRER" intents launched by Android after an app is installed from the Market.
I am following the details here: http://code.google.com/mobile/analytics/docs/android/#referrals
However, I cannot use Google Analytics so I have created my own solution. I have added the following to my manifest file:
<receiver android:name="com.test.Receiver" android:exported="true">
<intent-filter>
<action android:name="com.android.vending.INSTALL_REFERRER" />
</intent-filter>
</receiver>
and created a basic BroadcastReceiver class:
public class Receiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
Bundle extras = intent.getExtras();
String referrerString = extras.getString("referrer");
Log.w("TEST", "Referrer is: " + referrerString);
}
}
However, when the app is installed the receiver doesn't seem to catch the Intent (if the Intent is even broadcast?) and I get no logging output.
Am I going wrong somewhere or is the Market no longer launching these Intents when an app is installed?
Solution 1:
I would try to help who, like me, fails to make install_referrer work and who don't find ANY useful information about these features.
Notes:
- The intent
com.android.vending.INSTALL_REFERRER
will be caught during the install process, not when the application starts for the first time. - The referrer ...
extras.getString("referrer")
.. is fixed but the contents can be any string value that respect the http get syntax ...referrer=thatsthevalue&thisisnot=xxx
The above code is okay, just some explanations to complete the info:
- Android Manifest. The
<receiver>
tags must be inside the<application>
tags. - The correct url to link the market is not the results of the famous google forms in sdk
but this one
http://market.android.com/details?id=your.application.package.name&referrer=my_referrer_finally_works_fine
Obviously, you need to follow the link from the mobile device and the only way for a complete test is to publish a test application in the market.
And a final and personal note.
I don't understand why those info are omitted completely and i hope that Google will act for detailing it.
Solution 2:
This might be a little late, but you CAN test the install referrer without using Google Play, just use ADB :)
Run this from adb.exe
adb shell
am broadcast -a com.android.vending.INSTALL_REFERRER -n your.package/path.to.your.BroadcastReceiver --es "referrer" "test_referrer=test"
If you have logging setup in your BroadcastReceiver, you will see it popup in LogCat.
Hope this helps!
Solution 3:
I think these answers must have been written pre-Android 3.1 - because things have changed in one import way.
The system now marks app as dormant when they are installed - they won't receive INSTALL_REFERRER or any other broadcast until the user explicitly activates the app by running it (or placing widget).