我知道我可以使用以下 URL 链接到 Play 商店:
market://details?id=com.example.appname
我想做的是在后台“ping”这个 URL,并确定应用程序是否实际可用,然后,我可以适当地修改我的 UI。
我知道我可以使用以下 URL 链接到 Play 商店:
market://details?id=com.example.appname
我想做的是在后台“ping”这个 URL,并确定应用程序是否实际可用,然后,我可以适当地修改我的 UI。
假设,如果 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
}
}
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