5 votes

L'option "Afficher les notifications" est grisée pour certaines applications. Quelle en est la cause et comment puis-je la modifier ?

Il existe des applications pour lesquelles l'option "Afficher les notifications" est grisée, ce qui vous empêche de modifier la politique de notification de cette application.

  1. Pourquoi ou quand cela se produit-il ?
  2. J'ai remarqué ce problème pour les applications système uniquement ? Cela signifie-t-il que seules les applications système peuvent avoir cette option grisée ?
  3. Comment puis-je modifier la politique de notification pour ces applications ?

(Cliquez sur l'image pour l'agrandir)

IMG: IMG: IMG:

J'ai un Android 4.2.1, 4.4.2 et 5.0.2 enraciné. Je suis au courant du changement de la politique de notification dans Android 4.2.1 et 4.4.2. Vous pouvez déplacer le focus sur Lollipop, seulement pour le troisième point.

2 votes

Il y a quelques applications pour les paramètres de notification certains d'entre eux prétendant en être capables. Je n'en ai pas testé, donc je ne peux pas en être sûr.

0 votes

@Izzy Merci pour le lien. Utilisation de notifications_policy.xml Dans Android 4.2 et 4.4, je peux facilement désactiver les notifications d'applications pour n'importe quelle application, sans tenir compte de la case à cocher grisée, de sorte que je n'ai pas à compter sur des applications tierces. Mais le problème est plus conceptuel, la raison pour laquelle j'ai posé trois questions sous un seul capot.

4voto

jan Points 99

Avec l'accès Root, il y a certaines applications telles que Boîte à outils 3c qui vous permettent de modifier les paramètres de notification de n'importe quelle application. App Ops est un autre outil qui vous permet de contrôler les autorisations générales de toutes les applications.

Vous pouvez en fait gérer toutes les autorisations d'applications depuis la ligne de commande avec un accès Root. Dans Android 5.x, appops a été ajouté. Il permet de contrôler les autorisations générales des applications.

Trouvez le nom du paquet de votre application en consultant la liste générée par :

# pm list packages | sed 's/^package://'

Obtenir une liste des permissions et de leurs mode (autoriser/ignorer/refuser/par défaut) pour une application particulière :

(Notez que get n'est pas disponible dans 5.0.2 ou des versions antérieures de Lollipop, mais a été introduit dans Android 5.1.0 )

# appops get <package_name>

Définir l'autorisation d'une application particulière :

# appops set <package_name> <permission> <mode>

Pour accomplir la même chose que de décocher la case "afficher les notifications" dans le gestionnaire d'applications :

# appops set <package_name> POST_NOTIFICATION ignore

D'après mon expérience, l'utilisation de deny en tant que mode peut casser les appops afin que les permissions ne puissent pas être accédées ou modifiées depuis une application, je recommande donc d'utiliser ignore qui est ce que le système utilise.

Si, dans un cas quelconque, vous finissez par interdire l'accès aux opérations de l'application par le biais de quelque chose comme le gestionnaire d'applications, vous pouvez réinitialiser les autorisations d'une application :

appops reset <package_name>

Pour plus de contrôle sur les permissions détaillées, vous pouvez utiliser pm dans le terminal. Cela fonctionne avec les anciennes versions d'Android.

Trouvez le nom du paquet de votre application en consultant la liste générée par :

# pm list packages | sed 's/^package://'

Ensuite, dressez la liste des autorisations pour un paquet particulier :

# pm list permissions <package_name>

Trouvez les autorisations de notification :

# pm list permissions <package_name> | grep NOTIF

Accorder ou révoquer une permission particulière :

# pm grant <package_name> <permission>
# pm revoke <package_name> <permission>

Les permissions listées avec le gestionnaire de paquets sont très détaillées. L'utilisation d'une application capable de les gérer peut être une solution plus pratique.

0 votes

Bonjour, j'ai ajouté quelques informations sur get disponibilité des paramètres parce que cela m'a dérouté puisque Android 5.0.2 ou toute autre version 5.0.x ne l'a pas. N'hésitez pas à faire un retour en arrière, mais pourquoi le feriez-vous ? :)

0 votes

Jan, comment révoquer la capacité d'une application à afficher un toast dans Android 4.4.2 ? Contrairement à 4.2.1 Kitkat a appops.xml mais n'a pas le binaire appops pour nous de faire quelque chose avec ce fichier. Et changer ce fichier ne fait rien, même après un redémarrage. Je suis intéressé par ce qui suit question . Voyez si vous pouvez aider là-bas ou au moins ici. Merci !

0 votes

@Firelord, merci d'avoir fait cette modification. Je n'étais pas au courant de la différence d'appops entre les versions de Lollipop. De plus, j'ai posté le lien que vous avez fourni. ici . C'était un peu trop long pour être publié en tant que commentaire.

3voto

Andrew T. Points 12017

réponse de jan traite déjà de la manière de modifier la politique de notification pour ces applications (dont la fonction "Afficher les notifications" est désactivée).

En ce qui concerne le pourquoi et le quand (ou essentiellement, dans quelles conditions cela s'applique), votre hypothèse d'applications système est sur la bonne voie.

Pour être exact, comme Sergey a expliqué dans le commentaire seuls les paquets signés avec le platform clé (du fournisseur/fabricant, par ex. AOSP ) auront ce privilège. Ces paquets sont partie de la plate-forme de base . D'autres applications préinstallées (y compris les applications bénéficiant de certains privilèges spéciaux, qui sont signées avec l'icône shared o media ) et les applications "système" (les applications qui sont mises sur /system/app dossier et droit d'accès accordé) ne sont pas comptabilisés.

Résumé : à partir de la dernière version (Android 5.1.1 Lollipop), la case à cocher est désactivée si :

  1. L'application est signée avec platform (faisant partie de la plate-forme de base), ou
  2. L'application n'est pas installée sur l'utilisateur actuel (en cas de multi-utilisateur)

De InstalledAppDetails.java (c'est ce qu'affiche "App Info"),

private CompoundButton mNotificationSwitch; // this is the "show notifications" checkbox

...

private void initNotificationButton() {

    ...

    if (Utils.isSystemPackage(mPm, mPackageInfo)) {
        mNotificationSwitch.setEnabled(false);
    } else if ((mPackageInfo.applicationInfo.flags & ApplicationInfo.FLAG_INSTALLED) == 0) {
        // App is not installed on the current user
        mNotificationSwitch.setEnabled(false);
    } else {
        mNotificationSwitch.setEnabled(true);
        mNotificationSwitch.setOnCheckedChangeListener(this);
    }
}

Note :

  • Utils.isSystemPackage() renvoie à true uniquement pour les paquets signés avec le platform clé.
  • Cela ne s'applique pas à Android 6.0 Marshmallow en raison de la refonte de l'interface utilisateur d'App Info ; il n'y a plus de case à cocher, mais des paramètres de notification centralisés par application. Cependant, le principe sous-jacent reste le même : vous ne pouvez pas bloquer les notifications d'une application qui est un paquet système .

0 votes

Merci pour le lien. Mais dans mon Paranoid et RR Rom certaines applications système comme HTML viewer, Launcher, Download et plus n'ont pas cette option grisée. Il serait très apprécié si un peu plus de raisonnement concernant mon point 1 et 2 est fourni.

2 votes

@Firelord Utils.isSystemPackage() renvoie à true uniquement pour les paquets signés par le platform qui doit être utilisé uniquement pour les paquets qui font partie de la plate-forme de base . D'autres applications préinstallées (y compris les applications bénéficiant de certains privilèges spéciaux, qui sont signées avec le logo de la shared o media ) ne sont pas considérées ici comme des applications "système".

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