views:

237

answers:

1

My Android main application will consist in a main program, with a few pre-installed modules.
Then I want to offer different modules later, best would be as separate files. Modules like: location, weather, agenda.

How would you accomplish this?

I want to keep in the database the modules that are installed/present. So I must put sometimes the modules into database, maybe by detecting if there are present at launch time. The main app will work based on these modules.

How can I build these modules as separate files? They won't be an entry point in my application. So they must not be an application in the navigation menu.

Is this possible?
How do I have to create this using Eclipse?
In what format will I offer the modules?
How will the user add/remove modules?

+2  A: 

Android allows you to loosely couple applications together with Intents and ContentProviders, so it should be possible to achieve what you're looking for. The hard part will be planning everything up front, so you have logical divisions of functionality (and so things plug together easily).

I want to keep in the database the modules that are installed/present. So I must put sometimes the modules into database, maybe by detecting if there are present at launch time. The main app will work based on these modules.

You can register a BroadcastReceiver for ACTION_PACKAGE_ADDED, which will fire whenever a new application is installed. Your main application should be able to use this to determine when additional modules are installed.

In what format will I offer the modules?

You probably want to still package the modules as apks so they can be uploaded to the marketplace. If you want them to not appear in the launcher (the app drawer), you can always remove the default <intent-filter> and the app will not be launchable (but still be removable).

How do I have to create this using Eclipse?

Your modules would still be standalone applications.

How will the user add/remove modules?

From the marketplace or direct downloads off of the web (if you want).

Erich Douglass
If my app is not started, when will it receive the BroadcastReceiver of ACTION_PACKAGE_ADDED?
Pentium10
A BroadcastReceiver doesn't run continuously like a Service and should be "enabled" as soon as your app is installed, although, like all Android application elements, it can be killed by the system.
Erich Douglass
I didn't get the answer for my question. If my app is not started, when will it receive the BroadcastReceiver event of ACTION_PACKAGE_ADDED?
Pentium10
If you create a BroadcastReciever to listen for ACTION_PACKAGE_ADDED, it will receive the event when a new package is installed even when your app is not running.
Erich Douglass