¿Cómo permitir que los usuarios busquen la última versión de la aplicación desde la aplicación?

Quiero añadir un botón "Buscar actualizaciones" en las aplicaciones para que cuando alguien haga clic en él, muestre un mensaje de progreso / diálogo de progreso para comprobar la versión de la aplicación.

Si se encuentra una nueva versión, las aplicaciones se descargarán automáticamente en el teléfono y dejarán al usuario instalar manualmente las aplicaciones actualizadas.

O cualquier otro método lo hará siempre y cuando pueda comprobar la última versión y notificar al usuario para actualizar.

7 Solutions collect form web for “¿Cómo permitir que los usuarios busquen la última versión de la aplicación desde la aplicación?”

Si se trata de una aplicación en el mercado, a continuación, en la puesta en marcha de la aplicación, el fuego un intento de abrir la aplicación de mercado con suerte que hará que se busque actualizaciones.

De lo contrario implementar y actualizar verificador es bastante fácil. Aquí está mi código (áspero) para él:

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

Por supuesto usted debe reescribir esto para hacer la petición en un hilo de fondo pero usted consigue la idea.

Si te gusta algo un poco pero más complejo pero permite que tu aplicación aplique automáticamente la actualización ver aquí .

Para ahorrar tiempo escribiendo para comprobar la actualización de la nueva versión de la aplicación para Android, lo escribí como biblioteca y código abierto en https://github.com/winsontan520/Android-WVersionManager

Puede utilizar esta Biblioteca de Android: https://github.com/danielemaddaluno/Android-Update-Checker . Su objetivo es proporcionar un instrumento reutilizable para comprobar de forma asincrónica si existe alguna actualización lanzada más reciente de su aplicación en la tienda. Se basa en el uso de Jsoup ( http://jsoup.org/ ) para probar si realmente existe una nueva actualización para analizar la página de la aplicación en Google Play Store:

 private boolean web_update(){ try { String curVersion = applicationContext.getPackageManager().getPackageInfo(package_name, 0).versionName; String 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; } } 

Y como función de "valor" lo siguiente (funciona si los valores están entre 0 y 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 ); } } 

Si sólo desea verificar una diferencia entre las versiones, puede cambiar:

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

Vaya a su página de reproducción:

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

Uso de un HTTP estándar GET. Ahora, el siguiente jQuery encuentra información importante para usted:

Versión actual

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

Qué hay de nuevo

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

Ahora que puede extraer esta información manualmente, simplemente haga un método en su aplicación que ejecute esto para usted.

 public static String[] getAppVersionInfo(String playUrl) { HtmlCleaner cleaner = new HtmlCleaner(); CleanerProperties props = cleaner.getProperties(); props.setAllowHtmlInsideAttributes(true); props.setAllowMultiWordAttributes(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']"); String version = "", whatsNew = ""; for (Object new_node : new_nodes) { TagNode info_node = (TagNode) new_node; whatsNew += info_node.getAllChildren().get(0).toString().trim() + "\n"; } if (version_nodes.length > 0) { TagNode ver = (TagNode) version_nodes[0]; version = ver.getAllChildren().get(0).toString().trim(); } return new String[]{version, whatsNew}; } catch (IOException | XPatherException e) { e.printStackTrace(); return null; } } 

Utiliza HtmlCleaner

No hay API para esto, y no se puede instalar automáticamente, sólo puede redirigir a su página de mercado para que puedan actualizar. Puede tener su última versión en un archivo en un servidor Web y hacer que la aplicación lo revise. He aquí una implementación de esto:

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

Primero debe comprobar la versión de la aplicación en el mercado y compararla con la versión de la aplicación en el dispositivo. Si son diferentes, puede ser una actualización disponible. En este post escribí el código para obtener la versión actual del mercado y la versión actual en el dispositivo y compararlos juntos. También mostré cómo mostrar el diálogo de actualización y redirigir al usuario a la página de actualización. Por favor, visite este enlace: https://stackoverflow.com/a/33925032/5475941

Agrega compile 'org.jsoup:jsoup:1.10.2' a dependencias en APP LEVEL build.gradle

&

Sólo tiene que añadir el código a continuación y que son buenos para ir.

 private class GetVersionCode extends AsyncTask<Void, String, String> { @Override protected String 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(String 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 String 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(); } } } 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.