8
votes

Obtenez une liste de chaque lanceur à Android

Dans mon application, je souhaite afficher une liste de chaque lanceur disponible (pour Homescreen) sur ce téléphone Android spécifique. Est-il possible d'obtenir une sorte d'informations d'Android OS et comment puis-je faire cet appel?

Merci!

genre Cordialement Daniel


0 commentaires

3 Réponses :


1
votes

Essayez ce qui suit:

  1. Obtenez la liste des applications installées:

    Liste pkglist = getpackagemanager (). getInstaldpackages (packagemanager.get_activités);

  2. Itérate sur cette liste et obtenez l'activité de lanceur en utilisant:

    getpackagemanager (). GetLaunchinTentForpackage (Packagename);

    Pour plus de détails, lisez ici: Packagemanager . J'espère que cela aide.


1 commentaires

IIUC, getLaunchinTentForpackage (..) vous retournera dans l'intention de toute application, pas seulement du lanceur. Par exemple. Les applications "Paramètres" et "Media Player" ont également des intentions de lancement.



20
votes

Vous pouvez interroger la liste de resolverinfo qui correspond à une intention spécifique. Le prochain extrait de code Imprimer tous les lanceurs installés.

PackageManager pm = getPackageManager();
Intent i = new Intent(Intent.ACTION_MAIN);
i.addCategory(Intent.CATEGORY_HOME);
List<ResolveInfo> lst = pm.queryIntentActivities(i, 0);
for (ResolveInfo resolveInfo : lst) {
    Log.d("Test", "New Launcher Found: " + resolveInfo.activityInfo.packageName);
}


4 commentaires

1. Vous devriez vérifier (! lst.isempty ()) , voir OFF. Référence . 2. Votre réponse est meilleure que @ flavio's, voir les commentaires


Utilisez également inent.action_main pour action intention et inent.category_home pour catégorie d'intention au lieu de chaînes codées dures.


Le chèque isempty () est inutile ici dans A pour chaque


Merci @electrocrat et Jacksonf1re pour les suggestions. Réponse modifiée.



2
votes

Le code de code ci-dessus ne fonctionne pas avec précision, le résultat de la liste des lanceurs inclut également l'application du paramètre du système dont le nom du package est com.android.Settings. Ce résultat inattendu se produit sur mes deux pixels 2 (Android 8.0) et Nexus 6 (Android 7.1).


0 commentaires