Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to allow users to check for the latest app version from inside the app?

I want to add a "Check for update" button in apps so that when someone clicks it, it will display a toast message / progress dialog for checking the app's version.

If new version is found the apps will auto download it to the phone and let user to manually install the updated apps.

Or any others method will do as long as it can check for latest version and notify the user to update.


Update: Now you can do this inside your app using https://developer.android.com/guide/playcore/in-app-updates

like image 364
xDragonZ Avatar asked Sep 04 '11 08:09

xDragonZ


People also ask

Can I force users to update the app?

You can use https://appupgrade.dev/ service to force update you mobile apps. You need to create new version for your app versions you want to update in the app upgrade service and select whether you want to force it or just want to let users know that new version is available. See the response has force update true.

How do you know what version of an app is in an app?

Android SettingsOpen the Settings app on your Android device. Open the "Applications" and/or "Application Manager" section. Tap on your app to select it. The App Settings Panel has multiple options including App Version, Notifications, and Location.

How do you control the application version update to specific number of users?

Click on the app that you want the information and go to Statistics on the left menu. Now, you have a graph on your page. You can select the type of stats you want to see on the top in the middle, keep "Installs on active devices" selected. Right below that, you have another dropdown on "Android version".


2 Answers

You can use this Android Library: https://github.com/danielemaddaluno/Android-Update-Checker. It aims to provide a reusable instrument to check asynchronously if exists any newer released update of your app on the Store. It is based on the use of Jsoup (http://jsoup.org/) to test if a new update really exists parsing the app page on the Google Play Store:

private boolean web_update(){     try {                String curVersion = applicationContext.getPackageManager().getPackageInfo(BuildConfig.APPLICATION_ID, 0).versionName;            String newVersion = curVersion;         newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + BuildConfig.APPLICATION_ID + "&hl=en")                 .timeout(30000)                 .userAgent("Mozilla/5.0 (Windows; U; WindowsNT 5.1; en-US; rv1.8.1.6) Gecko/20070725 Firefox/2.0.0.6")                 .referrer("http://www.google.com")                 .get()                 .select("div[itemprop=softwareVersion]")                 .first()                 .ownText();         return (value(curVersion) < value(newVersion)) ? true : false;     } catch (Exception e) {         e.printStackTrace();         return false;     } } 

And as "value" function the following (works if values are beetween 0-99):

private long value(String string) {     string = string.trim();     if( string.contains( "." )){          final int index = string.lastIndexOf( "." );         return value( string.substring( 0, index ))* 100 + value( string.substring( index + 1 ));      }     else {         return Long.valueOf( string );      } } 

If you want only to verify a mismatch beetween versions, you can change:

value(curVersion) < value(newVersion) with value(curVersion) != value(newVersion)

like image 64
madx Avatar answered Oct 11 '22 10:10

madx


If it is an application on the Market, then on app start-up, fire an Intent to open up the Market app hopefully which will cause it to check for updates.

Otherwise implementing and update checker is fairly easy. Here is my code (roughly) for it:

String response = SendNetworkUpdateAppRequest(); // Your code to do the network request                                                  // should send the current version                                                  // to server if(response.equals("YES")) // Start Intent to download the app user has to manually install it by clicking on the notification     startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("URL TO LATEST APK"))); 

Of course you should rewrite this to do the request on a background thread but you get the idea.

If you like something a little but more complex but allows your app to automatically apply the update see here.

like image 28
Jasoneer Avatar answered Oct 11 '22 12:10

Jasoneer