Comment permettre aux utilisateurs de vérifier la dernière version de l’application depuis l’intérieur de l’application?

Je souhaite append un bouton “Vérifier les mises à jour” dans les applications afin que lorsque quelqu’un clique dessus, il affiche une boîte de dialog de message / progression de toast pour vérifier la version de l’application.

Si une nouvelle version est trouvée, les applications la téléchargeront automatiquement sur le téléphone et laisseront l’utilisateur installer manuellement les applications mises à jour.

Ou toute autre méthode fera l’affaire tant qu’elle pourra vérifier la dernière version et avertir l’utilisateur de la mise à jour.

Google a mis à jour le magasin deux mois auparavant. C’est la solution qui fonctionne maintenant pour moi.

class GetVersionCode extends AsyncTask { @Override protected Ssortingng doInBackground(Void... voids) { Ssortingng newVersion = null; try { Document document = Jsoup.connect("https://play.google.com/store/apps/details?id=" + MainActivity.this.getPackageName() + "&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(); if (document != null) { Elements element = document.getElementsContainingOwnText("Current Version"); for (Element ele : element) { if (ele.siblingElements() != null) { Elements sibElemets = ele.siblingElements(); for (Element sibElemet : sibElemets) { newVersion = sibElemet.text(); } } } } } catch (IOException e) { e.printStackTrace(); } return newVersion; } @Override protected void onPostExecute(Ssortingng onlineVersion) { super.onPostExecute(onlineVersion); if (onlineVersion != null && !onlineVersion.isEmpty()) { if (Float.valueOf(currentVersion) < Float.valueOf(onlineVersion)) { //show anything } } Log.d("update", "Current version " + currentVersion + "playstore version " + onlineVersion); } } 

et n'oubliez pas d'append la bibliothèque JSoup

 dependencies { comstack 'org.jsoup:jsoup:1.8.3'} 

et sur Oncreate ()

 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Ssortingng currentVersion; try { currentVersion = getPackageManager().getPackageInfo(getPackageName(), 0).versionName; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } new GetVersionCode().execute(); } 

c'est ça .. Merci à ce lien

Pour gagner du temps en écrivant pour vérifier la mise à jour de la nouvelle version pour l’application Android, je l’ai écrite en tant que bibliothèque et en open source sur https://github.com/winsontan520/Android-WVersionManager

Vous pouvez utiliser cette bibliothèque Android: https://github.com/danielemaddaluno/Android-Update-Checker . Il a pour objective de fournir un instrument réutilisable permettant de vérifier de manière asynchrone s’il existe toute nouvelle mise à jour de votre application sur le Store. Il est basé sur l’utilisation de Jsoup ( http://jsoup.org/ ) pour tester si une nouvelle mise à jour existe réellement, en analysant la page de l’application sur le Google Play Store:

 private boolean web_update(){ try { Ssortingng curVersion = applicationContext.getPackageManager().getPackageInfo(package_name, 0).versionName; Ssortingng newVersion = curVersion; newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + package_name + "&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; } } 

Et en tant que "valeur" fonction suivante (fonctionne si les valeurs sont comsockets entre 0 et 99):

 private long value(Ssortingng ssortingng) { ssortingng = ssortingng.sortingm(); if( ssortingng.contains( "." )){ final int index = ssortingng.lastIndexOf( "." ); return value( ssortingng.subssortingng( 0, index ))* 100 + value( ssortingng.subssortingng( index + 1 )); } else { return Long.valueOf( ssortingng ); } } 

Si vous souhaitez uniquement vérifier une incompatibilité entre les versions, vous pouvez modifier:

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

S’il s’agit d’une application sur le marché, puis au démarrage de l’application, lancez une Intention d’ouvrir l’application Market, ce qui lui permettra de vérifier les mises à jour.

Sinon, l’implémentation et la mise à jour du vérificateur sont assez faciles. Voici mon code (grossièrement) pour cela:

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

Bien sûr, vous devriez réécrire ceci pour faire la demande sur un thread d’arrière-plan, mais vous avez l’idée.

Si vous aimez quelque chose d’un peu plus complexe, mais permet à votre application d’appliquer automatiquement la mise à jour, cliquez ici .

Accédez à votre page de lecture:

 https://play.google.com/store/apps/details?id=com.yourpackage 

Utiliser un HTTP GET standard. Maintenant, jQuery trouve des informations importantes pour vous:

Version actuelle

 $("[itemprop='softwareVersion']").text() 

Quoi de neuf

 $(".recent-change").each(function() { all += $(this).text() + "\n"; }) 

Maintenant que vous pouvez extraire ces informations manuellement, créez simplement une méthode dans votre application qui l’exécute pour vous.

 public static Ssortingng[] getAppVersionInfo(Ssortingng playUrl) { HtmlCleaner cleaner = new HtmlCleaner(); CleanerProperties props = cleaner.getProperties(); props.setAllowHtmlInsideAtsortingbutes(true); props.setAllowMultiWordAtsortingbutes(true); props.setRecognizeUnicodeChars(true); props.setOmitComments(true); try { URL url = new URL(playUrl); URLConnection conn = url.openConnection(); TagNode node = cleaner.clean(new InputStreamReader(conn.getInputStream())); Object[] new_nodes = node.evaluateXPath("//*[@class='recent-change']"); Object[] version_nodes = node.evaluateXPath("//*[@itemprop='softwareVersion']"); Ssortingng version = "", whatsNew = ""; for (Object new_node : new_nodes) { TagNode info_node = (TagNode) new_node; whatsNew += info_node.getAllChildren().get(0).toSsortingng().sortingm() + "\n"; } if (version_nodes.length > 0) { TagNode ver = (TagNode) version_nodes[0]; version = ver.getAllChildren().get(0).toSsortingng().sortingm(); } return new Ssortingng[]{version, whatsNew}; } catch (IOException | XPatherException e) { e.printStackTrace(); return null; } } 

Utilise HtmlCleaner

Il n’y a pas d’API pour cela, et vous ne pouvez pas l’installer automatiquement, vous pouvez simplement les redirect vers sa page Market afin qu’ils puissent effectuer la mise à niveau. Vous pouvez avoir votre dernière version dans un fichier sur un serveur Web et demander à l’application de le vérifier. Voici une implémentation de ceci:

http://code.google.com/p/openintents/source/browse/#svn%2Ftrunk%2FUpdateCheckerApp

add comstack 'org.jsoup:jsoup:1.10.2' aux dépendances dans APP LEVEL build.gradle

Et

Ajoutez juste le code ci-dessous et vous êtes prêt à partir.

 private class GetVersionCode extends AsyncTask { @Override protected Ssortingng doInBackground(Void... voids) { try { newVersion = Jsoup.connect("https://play.google.com/store/apps/details?id=" + SplashActivity.this.getPackageName() + "&hl=it") .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 newVersion; } catch (Exception e) { return newVersion; } } @Override protected void onPostExecute(Ssortingng onlineVersion) { super.onPostExecute(onlineVersion); if (!currentVersion.equalsIgnoreCase(onlineVersion)) { //show dialog new AlertDialog.Builder(context) .setTitle("Updated app available!") .setMessage("Want to update app?") .setPositiveButton("Update", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // continue with delete final Ssortingng appPackageName = getPackageName(); // getPackageName() from Context or Activity object try { Toast.makeText(getApplicationContext(), "App is in BETA version cannot update", Toast.LENGTH_SHORT).show(); startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=" + appPackageName))); } catch (ActivityNotFoundException anfe) { startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("https://play.google.com/store/apps/details?id=" + appPackageName))); } } }) .setNegativeButton("Later", new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { // do nothing dialog.dismiss(); new MyAsyncTask().execute(); } }) .setIcon(android.R.drawable.ic_dialog_alert) .show(); } } } 

Vous devriez d’abord vérifier la version de l’application sur le marché et la comparer avec la version de l’application sur l’appareil. S’ils sont différents, il peut s’agir d’une mise à jour disponible. Dans cet article, j’ai écrit le code pour obtenir la version actuelle du marché et la version actuelle sur l’appareil et les comparer. J’ai également montré comment afficher la boîte de dialog de mise à jour et redirect l’utilisateur vers la page de mise à jour. S’il vous plaît visitez ce lien: https://stackoverflow.com/a/33925032/5475941