2013-06-02 27 views

Trả lời

6

Giả sử, nếu ứng dụng không khả dụng, trang dưới http://play.google.com/store/apps/details?id=<package_name> chứa, ví dụ: từ error-section. Nếu ứng dụng có sẵn, nó không chứa từ này.

Đặt HTTP GET tới URL đó và tìm kiếm error-section.

  • Không error-section - ứng dụng của bạn khả dụng.
  • Nếu không, tính năng này không khả dụng.

Như thế này:

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 
    } 
} 
+0

này trông hợp lý. Cám ơn vì cái này. – Booger

+0

Đây là một ý tưởng hay nhưng không hiệu quả. Tôi nghĩ rằng Web không phải luôn luôn lọc dựa trên thiết bị (vì vậy tất cả các kiểm tra trở lại hợp lệ - vì Trang Web đã có trong Cửa hàng Play). – Booger

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; 
    } 

} 

tôi đã cố gắng với đúng & gói giả và đưa ra yêu cầu xấu responze của nó nếu ứng dụng không có sẵn & dương (thành công 200 code) nếu ứng dụng là có .. vì vậy plz kiểm tra nó một khi nó có thể giúp u.

android 2.2 & phút ứng dụng req 2,3

Correct URL 200 Response Success Resultfake url. app url which is nt available on play store Failure result 404

+0

Vâng, ví dụ của bạn sẽ hoạt động, nếu gói không tồn tại, tuy nhiên, tôi muốn thử nghiệm với các tên gói hợp lệ (không phải là angrybirds_test). Tôi cần phải gửi một URL hợp lệ (chứa một gói) và có Cửa hàng Play phản hồi. Thật không may, khi tôi chạy thử nghiệm này cho một ứng dụng không có trên Android 2.3 (sử dụng Nexus One), tôi vẫn nhận được phản hồi hợp lệ từ máy chủ (vì URL hợp lệ - mặc dù ứng dụng không khả dụng trên máy chủ). Để rõ ràng - sử dụng tên gói giả không phải là kiểm tra hợp lệ - điều này cần phải không thành công (vì ứng dụng không có trong cửa hàng), ngay cả khi tôi cung cấp URL hợp lệ. – Booger

+0

tôi đã thử nghiệm với thiết bị có sẵn và trong câu hỏi xác định mức độ api trong đó u hve thử nghiệm nd didnt làm việc ... để người dùng có thể trả lời phù hợp.it là cho phản ứng 200 nếu ứng dụng có sẵn trên thị trường và nếu m không có sẵn trên thị trường thn nó cho trả lời 404 Không tìm thấy ... nếu sở hữu thn gve url hoặc tên gói để làm rõ. – user1140237

+0

Tôi đã thử nghiệm mã trước đó với NexusOne đang chạy 2.3 (CyanogenMod). Tôi không có thiết bị đó với tôi, để kiểm tra sắc thái này. Tôi hy vọng nó hoạt động, và sẽ kiểm tra nó một lần nữa (vì vậy tôi có thể giải thưởng tiền thưởng nếu có). – Booger