2011-09-20 19 views

Respuesta

8

Hay dos formas. Puede utilizar los ya mencionados getPackageManager() y getApplicationInfo() (si no se encuentra el paquete, se lanzará un PacketManager.NameNotFoundException - vea here). El nombre del paquete de Android Market es com.android.vending.

Sin embargo, también puede crear una intención ficticia para buscar en el mercado y comprobar cómo se maneja. Si la lista resultante tiene al menos una entrada, puede estar seguro de que Android Market está instalado:

Intent market = new Intent(Intent.ACTION_VIEW, Uri.parse("market://search?q=dummy")); 
PackageManager manager = getPackageManager(); 
List<ResolveInfo> list = manager.queryIntentActivities(mmarket, 0); 
+0

Es "permiso com.android.vending "también el packageName en dispositivos Honeycomb (o posterior) donde se usa la aplicación" MyApps "? Además, la comprobación de intención "market: //" no es confiable porque otras aplicaciones de mercado también usan eso. –

+0

No puedo asegurarlo cuando se trata de com.android.vending y Honeycomb. Sin embargo, los desarrolladores de Android se refieren a com.android.vending sin notas específicas de Honeycomb (por ejemplo, http://developer.android.com/guide/publishing/licensing.html), así que supongo que funciona como se esperaba. – ernes7a

+1

En el Kindle Fire, la tienda de aplicaciones de Amazon responderá al mercado: // URI. –

1

Aquí es lo que hice (supone que existe navegador):

Intent market = new Intent(Intent.ACTION_VIEW).setData(Uri 
     .parse("market://details?id=com.example.app")); 


Intent website = new Intent(Intent.ACTION_VIEW).setData(Uri 
     .parse("http://play.google.com/store/apps/details?id=com.example.app")); 

try { 

    startActivity(market); 

} catch (ActivityNotFoundException e) { 

    startActivity(website); 

} 
Cuestiones relacionadas