I have written an install receiver to determine when an app has been installed via the Market. However, I also want to pass the INSTALL_REFERRER broadcast onto other receivers such as the Google Analytics AnalyticsReceiver
if it is installed within the app. Importantly, I do NOT know if other receivers are installed as my receiver will be used by other developers within their apps.
Currently, I receive the broadcast and when complete I call:
AnalyticsReceiver receiver = new AnalyticsReceiver();
receiver.onReceive(context, intent);
The issue is the AnalyticsReceiver
class may not be present.
So how do I pass on the broadcast if I'm not sure whether the app uses the AnalyticsReceiver
?
Or will Android itself make sure each receiver installed gets the broadcast?
Many thanks!
This doesn't really answer the question, but the only intended destination for INSTALL_REFERRER
is the Google Analytics library, and thus there are zero guarantees about the data contained in the broadcast (or anything about the broadcast for that matter), so you shouldn't rely on it.
On a side note, here are some related S.O. questions:
Roman's answer is not entirely correct. They don't go into step by step instructions, but Google themselves recommend using your own broadcast receiver if you need to. I do think they added this blurb recently, but not sure when. I'm pretty positive it did not exist when I answered one of the questions he links.
From their guide:
Note: Only one BroadcastReceiver class can be specified per application. Should you need to incorporate two or more BroadcastReceivers from different SDKs, you will need to create your own BroadcastReceiver class that will receive all broadcasts and call the appropriate BroadcastReceivers for each type of Broadcast.
This also seems to answer the question of whether you can blindly re-broadcast, at least according to Google.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With