2011-09-22 51 views
8

鑑於Android應用程序的ID /軟件包名稱,如何通過編程方式檢查應用程序是否可在Android Market上使用?檢查Android Market上的應用程序是否可用

例如:

com.rovio.angrybirds是可用的,其中,作爲com.random.app.ibuilt不是

我在具有被無論是從一個Android應用程序或從執行該檢查計劃一個Java Servlet。

謝謝

PS:我看了一下http://code.google.com/p/android-market-api/,但我想知道如果有辦法檢查

+0

要小心,並仔細閱讀與Google Market的許可協議細則,這可能違反了它。 – JPM

回答

5

你可以嘗試打開的詳細信息頁面應用任何簡單的方法 - https://market.android.com/details?id=com.rovio.angrybirds

如果應用doesn't存在,你會得到這樣的:

enter image description here

這也許並不理想,但你應該能夠解析返回的HTML,以確定該應用程序不存在。

+1

希望這實際上是一個404頁面,並且不需要解析,只需檢查標題即可。沒有檢查,雖然:) – Jay

+0

我不相信這是不幸的,但HTML看起來結構合理,所以解析應該是相對直截了當。雖然當然如有更改,恕不另行通知。 – RivieraKid

+1

@Jay - 是的,它似乎是一個404頁面。謝謝 – Ares

2

鑑於Android應用程序的ID /包名稱,如何在編程上檢查應用程序是否可在Android Market上使用?

沒有文件證明和支持的方法來做到這一點。

2

雖然@RivieeaKid的html解析解決方案有效,但我發現這可能是更持久和正確的解決方案。請確保使用'https'前綴(不是簡單的'http')來避免重定向。

/** 
* 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; 
    } 
} 
相關問題