2011-09-22 14 views
8

Biorąc pod uwagę identyfikator/nazwę pakietu aplikacji Android, w jaki sposób mogę sprawdzić programowo, czy aplikacja jest dostępna w Android Market?Sprawdź, czy aplikacja jest dostępna w Android Market

Na przykład:

com.rovio.angrybirds jest dostępna, gdzie jako com.random.app.ibuilt nie jest

Mam zamiar to sprawdzić mający być wykonywane albo z aplikacji Android lub Serwlet Java.

Dziękuję

PS: I przyjrzał się http://code.google.com/p/android-market-api/, ale zastanawiałem się, czy istnieje jakiś prostszy sposób na sprawdzenie

+0

Należy jednak zachować ostrożność i przeczytać drobną kopię umowy licencyjnej z Google Market, może to stanowić naruszenie. – JPM

Odpowiedz

5

Można spróbować otworzyć stronę ze szczegółowymi informacjami o aplikacji - https://market.android.com/details?id=com.rovio.angrybirds.

Jeśli aplikacja doesn't istnieje, to masz:

enter image description here

To może nie jest idealny, ale powinieneś być w stanie przeanalizować zwrócony HTML, aby określić, że aplikacja nie istnieje.

+1

Mam nadzieję, że faktycznie jest to strona 404, a parsowanie nie będzie wymagane, po prostu sprawdź nagłówki. Nie sprawdziłem :) – Jay

+0

Nie jestem przekonany, że jest to niestety, ale HTML wygląda na dość dobrze skonstruowaną, więc parsowanie powinno być stosunkowo proste. Choć oczywiście może ulec zmianie bez powiadomienia. – RivieraKid

+1

@Jay - Tak, wygląda na to, że jest to strona 404. Dziękujemy – Ares

2

Biorąc pod uwagę identyfikator/nazwę pakietu aplikacji Android, w jaki sposób mogę sprawdzić programowo, czy aplikacja jest dostępna w Android Market?

Nie ma udokumentowanych i obsługiwanych środków, aby to zrobić.

2

Podczas gdy rozwiązanie do analizowania html przez @RivieeaKid działa, stwierdziłem, że może to być bardziej trwałe i poprawne rozwiązanie. Upewnij się, że używasz prefiksu "https" (nie prostego "http"), aby uniknąć przekierowań.

/** 
* 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; 
    } 
} 
Powiązane problemy