Question

I'm developing an application that will most likely be preinstalled on devices. It will be also available on Google Play. 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.

I was thinking about, as suggested here, trying to contact my site periodically, and when update is available, download it.

Is there a way to do this update automatically, or even silently, so that user doesn't have to do anything (like running the package manually). Or, when my site shows update is available, to offer users an update through Google Play, even though it's not installed through Market (EDIT: This Google play option would be preferable, because than users wouldn't have to check "allow install of non-Market sources".)

Was it helpful?

Solution

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);  

OTHER TIPS

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.

If whoever bundled the app on the device does a proper job of it, then the app will still have a market link (even as a system app) and Market will prompt the user to upgrade it if a new version is available. After all, that's exactly what happens with an app like GMail that's pre-installed on phones.

You cannot install or upgrade a package automatically. Only the Android Market is capable of doing this (i.e. it silently updates itself).

You can certainly download a package and fire the Intent to install it, but the user will have to have the "Allow non-Market apps" options enabled, and they'll still have to manually approve the install/upgrade.

One place to possibly investigate is how Google Maps does it. This is generally pre-installed, but always appears to be shown as an update in the Android Market app, I believe. Whether there's a special flag in the packages.xml or manifest, I don't know.

There is a nice service that helps your app keep itself updated. Take a look at https://www.pushlink.com

In this product there is a NINJA mode that allows to perform updates without user interaction.

For other "modes", enabling "Install non-market app" is still needed. If it not enabled, the installation process is going to ask for it and redirect the user to the Application Settings, and after that, the user can install the app.

It's possible to fully automatically update an app, if you can sign an app as a system app. We wrote an app for specific hardware, we created an update app that the manufacturer signed for us. The update app runs on device startup, checks current version of the app and the new version, and installs the new version if necessary.

The use case would be a kiosk app, on tablets of one make and model, that don't have Google Play.

Google in 2018 Android dev summit announced android in-app update api's for developers so you can read whole story out here and get updated on this question.Android in-app update api details

https://developer.android.com/guide/app-bundle/in-app-updates

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top