2010-12-14 11 views
8

muszę sprawdzić, czy jest zainstalowany Android Market jak tenJaka jest nazwa pakietu z Android Market lub 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; 
    } 

Ale ja nie wiem, czy jest com.google.process.gapps pakiet, który ma rynek Android lub nie.

Odpowiedz

19

To com.android.vending (na mojej Galaxy S), a oto lepszy sposób, aby się dowiedzieć ... przez zapytanie o to, kto obsługuje rynek: // 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); 

Jeśli na liście jest co najmniej jeden wpis, rynek jest tam.

+0

muszę zmienić foo do prawdziwego pakietu? – jax

+5

Nie zgadzam się z tym całkowicie ... mogą być inne aplikacje na rynku, które nie mają związku z Google, a te mogą również obsługiwać intencje market: //. Jeśli chcesz sprawdzić konkretnie aplikację Google na rynku, prawdopodobnie będziesz musiał sprawdzić, czy com.android.vending w menedżerze pakietów w jakiś sposób. – greg7gkb

1

Twój kod jest tuż po prostu potrzebuje drobnych zmian

odjazdu Zmodyfikowany kod poniżej:

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"); 
    } 
Powiązane problemy