Comprobación de la versión de Android en la aplicación

Quiero comprobar la versión de la aplicación en google play cuando mi aplicación esté abierta. Si la aplicación tiene una versión superior a la de la aplicación instalada, quiero notificar al usuario que actualice la aplicación. He encontrado que "jerarquía de Android" jarra de aquí , en esto no puedo comprobar la versión dinámicamente en este, supongo que para establecer Mayor, Menor o Revisión. Alguien por favor me ayude ¿cómo puedo hacer?

Gracias por adelantado

Básicamente, debe comprobar la última versión de su aplicación en el mercado y la versión de la aplicación en el dispositivo y decidir si hay alguna actualización disponible. Para hacer esto, prueba esto:

Debe utilizar esto para obtener la versión actual (versión de la aplicación en el dispositivo):

private String getCurrentVersion(){ PackageManager pm = this.getPackageManager(); PackageInfo pInfo = null; try { pInfo = pm.getPackageInfo(this.getPackageName(),0); } catch (PackageManager.NameNotFoundException e1) { e1.printStackTrace(); } String currentVersion = pInfo.versionName; return currentVersion; } 

Y usa esto para obtener la última versión en Google Play (tomada desde https://stackoverflow.com/a/32942785/444991 ):

 private class GetLatestVersion extends AsyncTask<String, String, String> { String latestVersion; @Override protected void onPreExecute() { super.onPreExecute(); } @Override protected String doInBackground(String... params) { try { //It retrieves the latest version by scraping the content of current version from play store at runtime String urlOfAppFromPlayStore = "https://play.google.com/store/apps/details?id= your app package address"; Document doc = Jsoup.connect(urlOfAppFromPlayStore).get(); latestVersion = doc.getElementsByAttributeValue("itemprop","softwareVersion").first().text(); }catch (Exception e){ e.printStackTrace(); } return latestVersion; } } 

A continuación, cuando empiece la aplicación, compruébelos contra los demás de la siguiente manera:

 String latestVersion = ""; String currentVersion = getCurrentVersion(); Log.d(LOG_TAG, "Current version = " + currentVersion); try { latestVersion = new GetLatestVersion().execute().get(); Log.d(LOG_TAG, "Latest version = " + latestVersion); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } //If the versions are not the same if(!currentVersion.equals(latestVersion)){ final AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle("An Update is Available"); builder.setPositiveButton("Update", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //Click button action startActivity(new Intent(Intent.ACTION_VIEW, Uri.parse("market://details?id=your app package address"))); dialog.dismiss(); } }); builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { //Cancel button action } }); builder.setCancelable(false); builder.show(); } 

Y mostrar el cuadro de diálogo de actualización de usuario. Pero asegúrese de que ya ha importado la biblioteca jsoup.

Extra: Para importar la biblioteca jsoup, siga estos pasos:

1- vaya al menú Archivo
2- estructura del proyecto
3- clic izquierdo en la aplicación
4- Seleccione la pestaña de dependencias
5- Haga clic en +
6- Haga clic en la dependencia de la biblioteca
7- Buscar "jsoup"
8- elige org.jsoup: jsoup y haz clic en ok

Si no quieres usar una biblioteca como Jsoup, puedes usar algo como esto para obtener el número de versión actual de Google Play:

 import java.io.IOException; import java.io.InputStreamReader; import java.io.Reader; import java.net.MalformedURLException; import java.net.URL; public class StackAppVersion { public static void main(String[] args) { try { System.out.println(currentVersion()); } catch (IOException ex) { System.out.println("Failed to read Google Play page!"); } } private static String currentVersion() throws IOException { StringBuilder sb = new StringBuilder(); try (Reader reader = new InputStreamReader( new URL("https://play.google.com/store/apps/details?id=com.stackexchange.marvin&hl=en") .openConnection() .getInputStream() , "UTF-8" )) { while (true) { int ch = reader.read(); if (ch < 0) { break; } sb.append((char) ch); } } catch (MalformedURLException ex) { // Can swallow this exception if your static URL tests OK. } String parts[] = sb.toString().split("softwareVersion"); return parts[1].substring( parts[1].indexOf('>') + 1, parts[1].indexOf('<') ).trim(); } } 

Si mantiene "& hl = es" en la URL, la codificación de caracteres UTF-8 debería estar bien.

FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.