views:

998

answers:

2

I'm developing an application that should add it's shortcut to home screen after installation and remove it after the application is being uninstalled. The application will be preinstalled on the end user device, but still should have an option for uninstall). The task looks very simple but I've faced lots of troubles implementing it.

What I have done:

  • Add shortcut to the home screen using com.android.launcher.action.INSTALL_SHORTCUT on app first launch or on newt device reboot.
  • MANUALY remove shortcut using com.android.launcher.action.UNINSTALL_SHORTCUT.

What I can't (and almost giving up):

  • Automaticaly remove the shortcut when the application is being uninstalled.

There's not way to use Intent.ACTION_PACKAGE_REMOVED because the application being uninstalled does not receive this intent. I performed some tests and found out that the only shortcut type that is being removed with the application is the shortcut that is created from menu 'Add to home screen => Shortcuts => Applications => Application activity'. The shortcuts that are being created programatically or that are declared in AndroidManifest remain on home screen after the app is uninstalled.

There's almost none docs and posts on forums about this topic and I'm confused a little bit why such a simple operation that doesn't contradict with the Android security policy could not be implemented in a straight way.

Is there any way to ask OS to remove the corresponding shortcut on application uninstall? Can I catch the event that the application is being uninstalled before it is removed?

+1  A: 
Christopher
Note that "pre-installed" does not necessarily imply "firmware". It is possible to have an application installed as if it were a normal application, but just so happens to ship on the device in advance. The ARCHOS 5 Android tablet did that with a dozen or so apps, for example.
CommonsWare
Indeed. I'm working with devices that *will* have apps installed on the firmware, so I made sure to mention the firmware part. But I think the problem will still stand anyway due to the lack of PACKAGE_REMOVED broadcast.
Christopher
Though your comment prompted me to add a potential solution for non-firmware pre-installs. :)
Christopher
Christopher, thanks for the idea with two applications, I'll check if it's suitable for my application.
Pr0v0dn1k
+1  A: 

What you are describing is a limitation of the Home screen. The next version of Launcher2 addresses this issue and automatically removes widgets and shortcuts associated with an app. Some shortcuts might be left though if no association can be found (if your app creates a shortcut to the music player for instance.)

Romain Guy
Sounds great. What version will include the new Launcher?
Pr0v0dn1k

related questions