检查Android电子市场上的应用是否可用

时间:2011-09-22 14:55:29

标签: java android servlets google-play

考虑到Android应用程序的ID /包名称,如果应用程序在Android Market上可用,我如何以编程方式检查?

例如:

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

我计划从Android应用程序或Java Servlet执行此检查。

谢谢,

PS:我看了http://code.google.com/p/android-market-api/,但我想知道是否有更简单的方法来检查

3 个答案:

答案 0 :(得分:5)

您可以尝试打开该应用的详细信息页面 - https://market.android.com/details?id=com.rovio.angrybirds

如果应用doesn't存在,您就会明白这一点:

enter image description here

这可能不太理想,但您应该能够解析返回的HTML以确定该应用程序不存在。

答案 1 :(得分:2)

  

考虑到Android应用程序的ID /包名称,如果应用程序在Android Market上可用,我如何以编程方式检查?

没有记录和支持的方法来执行此操作。

答案 2 :(得分: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;
    }
}