5

我知道我可以使用以下 URL 链接到 Play 商店:

market://details?id=com.example.appname

我想做的是在后台“ping”这个 URL,并确定应用程序是否实际可用,然后,我可以适当地修改我的 UI。

4

2 回答 2

6

假设,如果 app 不可用,则下面的页面http://play.google.com/store/apps/details?id=<package_name>包含例如 word error-section。如果 app 可用,则不包含此词。

对该 URL 进行 HTTP GET 并搜索error-section.

  • error-section- 您的应用程序可用。
  • 否则,它不可用。

像这样:

final HttpClient client = new DefaultHttpClient();  
final String getURL = "http://play.google.com/store/apps/details?id=<package_name>";
final HttpGet get = new HttpGet(getURL);
final HttpResponse responseGet = client.execute(get);  
final HttpEntity resEntityGet = responseGet.getEntity();  
if (resEntityGet != null) 
{  
    final String response = EntityUtils.toString(resEntityGet);
    if (response.indexOf("error-section") == -1)
    {
        // available
    }
    else
    {
        // unavailable
    }
}
于 2013-06-02T16:18:31.460 回答
2
private class URLTest extends AsyncTask<Void, Void, Void> {

    @Override
    protected Void doInBackground(Void... params) {
        try {
            try {
                HttpClient httpclient = new DefaultHttpClient();
                String strurl = "https://play.google.com/store/apps/details?id=com.rovio.angrybirdsstarwars.ads.iap";
                // String strurl =
                // "https://play.google.com/store/apps/details?id=com.rovio.angrybirdsstarwars.ads.iaptest";
                // //fake packagename append with "test"
                HttpGet httpget = new HttpGet(strurl);
                HttpResponse httpresp = httpclient.execute(httpget);
                if (httpresp.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
                    Log.e("Found", "YES");
                } else if (httpresp.getStatusLine().getStatusCode() == HttpStatus.SC_NOT_FOUND) {
                    Log.e("Found", "NO");
                }

            } catch (ClientProtocolException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (ParseException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

        } catch (Exception e) {
            Log.e("", "");
        }
        return null;
    }

}

我尝试使用正确和伪造的软件包,如果应用程序不可用并且如果应用程序存在则给出错误的请求响应(成功 200 代码)..所以请检查它,一旦它可能对你有帮助。

安卓 2.2 和应用程序最低要求 2.3

正确的 URL 200 响应成功结果 假网址。 应用程序 url 在 Play 商店中不可用失败结果 404

于 2013-06-26T06:41:46.040 回答