检查应用程序是不是在 Android Market 上可用

Posted

技术标签:

【中文标题】检查应用程序是不是在 Android Market 上可用【英文标题】:Check if app available on Android Market检查应用程序是否在 Android Market 上可用 【发布时间】:2011-11-22 22:22:12 【问题描述】:

给定 android 应用程序的 id/包名称,我如何以编程方式检查该应用程序是否在 Android Market 上可用?

例如:

com.rovio.angrybirds 可用,而 com.random.app.ibuilt 不可用

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

谢谢,

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

【问题讨论】:

请注意并阅读与 Google Market 的许可协议的细则,这可能违反了它。 【参考方案1】:

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

如果应用程序doesn't 存在,你会得到这个:

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

【讨论】:

希望这实际上是一个 404 页面,并且不需要解析,只需检查标题即可。虽然没有检查:) 我不相信这是不幸的,但 HTML 看起来结构合理,因此解析应该相对简单。当然,如有更改,恕不另行通知。 @Jay - 是的,它似乎是一个 404 页面。谢谢 请记住,由于这是您无法控制的,如果 API 决定更改您的代码今天假设的内容(例如 HTTP 代码 404),它可能会破坏您的程序检查。【参考方案2】:

给定 Android 应用程序的 id/包名称,我如何以编程方式检查该应用程序是否在 Android Market 上可用?

没有记录和支持的方法可以做到这一点。

【讨论】:

【参考方案3】:

虽然@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;
    

【讨论】:

以上是关于检查应用程序是不是在 Android Market 上可用的主要内容,如果未能解决你的问题,请参考以下文章

如何检查 Android 上是不是安装了 Flash 播放器

在模拟器 2.2 中安装 android market 应用程序

怎样提交Android应用到google market上去?

怎么注册android market的 帐户

转发布android app到android market的方法

Android Market链接的生成