Jeffrey Blattman
Jeffrey Blattman

Reputation: 22637

android intent when MY app is installed

i need to perform an action when my application is installed. i've looked into using

Intent.PACKAGE_ADDED

but i don't receive the intent in the app that's being installed. i want to run code when my app is installed for the first time.

the use case is registering with an online service. i can listed for BOOT_COMPLETED which is fine if the app is already installed, but i need to handle the case when the user first installs the app.

this post, Can you run an intent or script when your app gets installed on Android?

suggests listening to TIMER_TICK and on the first broadcast, perform the registration and set a flag so as not to perform it upon the next TIMER_TICK. this seems problematic because whether you do something or not in the receiver, you are still starting your receiver every single minute and using up battery in the process.

is there a better solution?

Upvotes: 7

Views: 6082

Answers (2)

user658042
user658042

Reputation:

There is no reliable event that you can catch. Even TIMER_TICK will only work below Android 3.1. From 3.1. onwards you can't receive system broadcasts until your app is in active state (which means the user has to launch it at least once manually).

Launch controls on stopped applications

Starting from Android 3.1, the system's package manager keeps track of applications that are in a stopped state and provides a means of controlling their launch from background processes and other applications.

[...]

Note that the system adds FLAG_EXCLUDE_STOPPED_PACKAGES to all broadcast intents. It does this to prevent broadcasts from background services from inadvertently or unnecessarily launching components of stoppped applications. [..]

Applications are in a stopped state when they are first installed but are not yet launched and when they are manually stopped by the user (in Manage Applications).

from the 3.1. release notes

I recommend to do your intitial work when the user starts your app for the first time.

Upvotes: 5

kabuko
kabuko

Reputation: 36302

If you're willing to assume that the Google Android Market app is installed, you could use INSTALL_REFERRER. See Get referrer after installing app from Android Market for more info.

Upvotes: 0

Related Questions