1 votes

Est-il possible d'obtenir le nom de l'alias d'activité actif ?

Je développe une application qui permet de changer l'icône affichée dans le lanceur. Je partage le code qui permet de le faire. Je comprends que ce n'est pas un forum pour les développeurs, donc vous pouvez imaginer qu'il y a plusieurs icônes dans l'application, mais qu'une seule est toujours affichée dans le lanceur.

public static void setIcon(LauncherIcon icon) {
    Context ctx = ApplicationLoader.applicationContext;
    PackageManager pm = ctx.getPackageManager();
    for (LauncherIcon i : LauncherIcon.values()) {
        pm.setComponentEnabledSetting(i.getComponentName(ctx), i == icon ? PackageManager.COMPONENT_ENABLED_STATE_ENABLED :
                PackageManager.COMPONENT_ENABLED_STATE_DISABLED, PackageManager.DONT_KILL_APP);
    }
}

Je voulais écrire une commande qui permettrait de savoir quelle icône est actuellement active. Cela peut être déterminé en prenant quelque part une liste des seules icônes actives. activity-alias es. Étant donné que le contrôle dans le code s'effectue par l'intermédiaire du PackageManager Je suppose qu'il est possible de le faire dans le terminal à l'aide de la commande pm utilitaire. Mais je n'ai rien trouvé pour m'aider. Si j'ai bien compris, d'une manière ou d'une autre, par le biais de pm Je peux obtenir une liste de activity-alias puis, pour chacun d'entre eux, d'obtenir les propriétés COMPONENT_ENABLED_STATE_ENABLED o COMPONENT_ENABLED_STATE_DISABLED que je spécifie dans le code. Si je trouve la propriété COMPONENT_ENABLED_STATE_ENABLED alors je devrais obtenir le nom de ce activity-alias .

0voto

diskriminant Points 11

Par exemple, si votre application a un paquetage com.company.Calc et a deux activity-alias : com.company.MainActivity1 (par défaut) et com.company.MainActivity2 vous pouvez obtenir des informations actives actuelles activity-alias comme ceci :

dumpsys package com.company.Calc | grep -A1 "enabledComponents" | grep "com.company" | grep -o '[^$(printf '\t') ].*' || echo "com.company.MainActivity1"

androidalle.com

AndroidAlle est une communauté de androiders où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X