2010-12-14 30 views
8

Tôi cần phải kiểm tra xem Android Market được cài đặt như thế nàytên gói của Android Market hoặc Google Apps

/* 
    * Test for existence of Android Market 
    */ 
    boolean androidMarketExists = false; 
    try{ 
     ApplicationInfo info = getPackageManager() 
          .getApplicationInfo("com.google.process.gapps", 0); 
     //application exists 
     androidMarketExists = true; 
    } catch(PackageManager.NameNotFoundException e){ 
     //application doesn't exist 
     androidMarketExists = false; 
    } 

là gì Nhưng tôi không biết nếu com.google.process.gapps là gói có thị trường Android hay không.

Trả lời

19

Đó là com.android.vending (trên Galaxy S) của tôi và đây là cách tốt hơn để tìm hiểu ... bằng cách truy vấn người xử lý thị trường: // URI.

Intent intent = new Intent(); 
    intent.setAction(Intent.ACTION_VIEW); 
    intent.setData(Uri.parse("market://search?q=foo")); 
    PackageManager pm = getPackageManager(); 
    List<ResolveInfo> list = pm.queryIntentActivities(intent, 0); 

Nếu danh sách có ít nhất một mục, Market ở đó.

+0

sao tôi cần phải thay đổi foo để một gói thật không? – jax

+5

Tôi hoàn toàn không đồng ý với điều này ... có thể có các ứng dụng thị trường khác trên điện thoại không có liên quan đến Google và những ứng dụng này cũng có thể xử lý thị trường: // intents. Nếu bạn cần kiểm tra ứng dụng thị trường của Google một cách cụ thể, tôi nghĩ bạn có thể cần phải kiểm tra com.android.vending trong trình quản lý gói bằng cách nào đó. – greg7gkb

1

Mã của bạn như vậy là hợp chỉ cần thay đổi nhỏ

Kiểm tra mã sửa đổi dưới đây:

boolean androidMarketExists = false; 
    try{ 
     ApplicationInfo info = getPackageManager().getApplicationInfo("com.android.vending", 0); 
     if(info.packageName.equals("com.android.vending")) 
      androidMarketExists = true; 
     else 
      androidMarketExists = false; 
    } catch(PackageManager.NameNotFoundException e){ 
     //application doesn't exist 
     androidMarketExists = false; 
    } 
    if(!androidMarketExists){ 
     Log.d(LOG_TAG, "No Android Market"); 
     finish(); 
    } 
    else{ 
     Log.d(LOG_TAG, "Android Market Installed"); 
    } 
Các vấn đề liên quan