2017-08-05 1 views
-1

J'ai une application qui peut gérer l'adresse URI unique via < intention-filter>. Cet URI est un URI personnalisé. Pour des raisons de sécurité son nécessaire qu'aucune autre application sur l'appareil mobile peut gérer via <intent-filter>Liste des applications qui peuvent gérer le filtre d'intention

Maintenant, je veux savoir combien de applications (et non des activités dans une application) sur l'appareil de l'utilisateur qui peut gérer cette URI.ent intention -filtre> **

Est-il possible de le faire?
Si nous pouvons, alors comment puis-je obtenir la liste des noms d'applications qui peuvent gérer données URI dans <-filtre intention>

Répondre

1

Une intention est définie au niveau d'activité, de sorte que vous ne pouvez pas obtenir une liste des Applications directement, vous pouvez seulement obtenir une liste d'activités. Vous pouvez ensuite regrouper ces activités par nom de package et obtenir ainsi la liste des applications qui ont une ou plusieurs activités capables de gérer l'intention. Quelque chose comme ceci:

Intent intent = new Intent(/* define you action */); 
    final List<ResolveInfo> list = getPackageManager().queryIntentActivities(intent, PackageManager.MATCH_DEFAULT_ONLY); 
    final Set<String> packages = new HashSet<>(); 
    if (list != null) { 
     for (ResolveInfo resolveInfo : list) { 
      packages.add(resolveInfo.activityInfo.packageName); 
     } 
    } 

L'ensemble « packages » contiendra une liste des noms de paquets, les applications de référencement qui peuvent gérer l'intention.