Is there a way to automatically update application on Android?

Just found a way that works. Fire an Intent for a Market that searches for my application.

Tested with OpenIntent Newsreader because for it was easy to find an older version .apk. Market finds an application, and when user clicks install, replaces older version with the one from the Market. I think that is much easier solution for a user than downloading manually .apk and running it.

Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse("market://search?q=" + APPLICATION_NAME));
startActivity(intent);  

Is there a way to update those instances that are not downloaded through Google Play, since Google Play won't notify users about an update.

Old question, new answer:

After digging on exact the same question (pre-installed app on device, how can I provide a update through Google-Play) I found this information on support.google.com*:

Google Play can manage updates to preloaded applications, provided the following conditions are met:

  • The preloaded app needs to be in the system partition
  • The preloaded app needs to be free
  • The preloaded app needs to be signed with the same signature as the app published in Google Play
  • The Package Name of the preloaded and updated app needs to be the same
  • The Version Code of the updated app needs to be greater than that of the preloaded app

* as of 2015-04-13


I'm developing an application that will most likely be preinstalled on devices.

Then you need to be talking to the device manufacturers and asking them your questions. Nobody else will be able to tell you what is and is not possible, given their device and the carrier(s) that will distribute it. The answers will depend heavily on how they create their firmware, whether your application will be part of the firmware or "installed" as a normal app, what their arrangement with the carrier is vis a vis firmware updates, etc. You may not even get a vote in the matter.


i had the same issue, now i check at the start of my app if theres a new version in my configuration xml.

I compare the actual version with the tag "< app_version >1.1< /app_version >" of my configuration.xml if its lower i ask with a custom AlertDialog if the user proceed with the upgrade

Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse(myapk_link));
startActivity(intent);    

after the download the user has to run the package manually.

if you choose the update from the Android market use:

Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse("market://details?id=com.package.name"));
startActivity(intent);  

com.package.name must be the "package" of your app

or

Intent intent = new Intent(Intent.ACTION_VIEW ,Uri.parse("market://search?q=" + APP_NAME));
startActivity(intent);