2010-12-14 9 views
8

ich überprüfen müssen, ob der Android Market wie dieseWas ist der Paketname des Android Market oder Google Apps

installiert ist
/* 
    * 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; 
    } 

Aber ich weiß nicht, ob com.google.process.gapps das ist Paket, das Android Market hat oder nicht.

Antwort

19

Es ist com.android.vending (auf meinem Galaxy S), und hier ist der bessere Weg, um herauszufinden ... durch die Abfrage, wer behandelt Markt: // URIs.

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

Wenn die Liste mindestens einen Eintrag hat, ist der Markt da.

+0

brauche ich foo zu einem echten Paket zu ändern? – jax

+5

Dem stimme ich nicht vollkommen zu ... es könnte andere Markt-Apps auf dem Handy geben, die keine Beziehung zu Google haben, und diese könnten auch mit market: // intents umgehen. Wenn Sie speziell nach der Market-App von Google suchen müssen, müssen Sie möglicherweise im Paket-Manager nach com.android.vending suchen. – greg7gkb

1

ist Ihr Code richtig braucht nur geringfügige Änderungen

Check out Code geändert unten:

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"); 
    } 
Verwandte Themen