2011-09-22 20 views
8

Dado el nombre de id/paquete de una aplicación Android, ¿cómo puedo verificar programáticamente si la aplicación está disponible en Android Market?Compruebe si la aplicación está disponible en Android Market

Por ejemplo:

com.rovio.angrybirds está disponible, donde como com.random.app.ibuilt no es

Estoy pensando en tener este control se lleva a cabo ya sea desde una aplicación para Android o desde un Java Servlet.

Gracias,

PD: Me tomó un vistazo a http://code.google.com/p/android-market-api/, pero me preguntaba si había alguna manera más sencilla de comprobar

+0

Sin embargo, tenga cuidado y lea la letra pequeña del contrato de licencia con Google Market, esto puede ser una violación de la misma. – JPM

Respuesta

5

Se podría tratar de abrir la página de detalles de la aplicación - https://market.android.com/details?id=com.rovio.angrybirds.

Si existe la aplicación doesn't, se obtiene lo siguiente:

enter image description here

Es quizás no es ideal, pero debe ser capaz de analizar el HTML devuelto para determinar que la aplicación no existe.

+1

Esperemos que esto sea en realidad una página 404, y el análisis no sería necesario, solo revisa los encabezados. Aunque no lo he comprobado :) – Jay

+0

No estoy seguro de que sea lamentablemente, pero el HTML se ve razonablemente bien estructurado, por lo que el análisis debería ser relativamente sencillo. Aunque, por supuesto, está sujeto a cambios sin previo aviso. – RivieraKid

+1

@Jay - Sí, parece que es una página 404. Gracias – Ares

2

Dado el nombre de id/paquete de una aplicación Android, ¿cómo puedo verificar programáticamente si la aplicación está disponible en Android Market?

No hay medios documentados y compatibles para hacerlo.

2

Mientras que la solución de análisis html de @RivieeaKid funciona, encontré que esta podría ser una solución más duradera y correcta. Asegúrese de utilizar el prefijo 'https' (no el simple 'http') para evitar redirecciones.

/** 
* Checks if an app with the specified package name is available on Google Play. 
* Must be invoked from a separate thread in Android. 
* 
* @param packageName the name of package, e.g. "com.domain.random_app" 
* @return {@code true} if available, {@code false} otherwise 
* @throws IOException if a network exception occurs 
*/ 
private boolean availableOnGooglePlay(final String packageName) 
     throws IOException 
{ 
    final URL url = new URL("https://play.google.com/store/apps/details?id=" + packageName); 
    HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection(); 
    httpURLConnection.setRequestMethod("GET"); 
    httpURLConnection.connect(); 
    final int responseCode = httpURLConnection.getResponseCode(); 
    Log.d(TAG, "responseCode for " + packageName + ": " + responseCode); 
    if(responseCode == HttpURLConnection.HTTP_OK) // code 200 
    { 
     return true; 
    } 
    else // this will be HttpURLConnection.HTTP_NOT_FOUND or code 404 if the package is not found 
    { 
     return false; 
    } 
} 
Cuestiones relacionadas