2010-07-27 5 views
3

Certains appareils Android ne disposent pas d'Android Market, comme la Corée, etc.Comment détecter l'existence d'Android Market sur les appareils?

Est-il possible de détecter l'existence d'Android Market lors de l'exécution?

Je sais que je peux essayer d'ouvrir un marché uri d'abord pour voir s'il y a une exception levée. Mais je ne pense pas que ce soit une approche judicieuse.

Répondre

4

Je sais que je peux essayer d'ouvrir un uri de marché d'abord pour voir s'il y a une exception jeté.

Créer le ACTION_VIEWIntent pour le marché Uri, puis utilisez PackageManager et queryIntentActivities() pour voir si vous obtenez quoi que ce soit de retour. Si cela renvoie une liste vide, vous ne savez rien sur le périphérique gère les valeurs Market Uri.

+0

Ceci est une bonne approche J'espère que tous les programmeurs bâtiment magasins tiers gèrent les URIs de marché corriger font leurs magasins fonctionnent comme un vrai remplacement au marché de google. – Janusz

1

Une solution complète, qui lit aussi le packagename par lui-même ...

Context context = this; 
final PackageManager packageManager = context.getPackageManager(); 

String packagename = this.getPackageName(); 

String url = "market://details?id=" + packagename; 

Intent i2 = new Intent(Intent.ACTION_VIEW); 
i2.setData(Uri.parse(url)); 

List<ResolveInfo> resolveInfo = packageManager.queryIntentActivities(i2,PackageManager.MATCH_DEFAULT_ONLY); 

if (resolveInfo.size() > 0) startActivity(i2);