[JAVA] [Android] Comment activer / désactiver le panneau de notification à l'aide de StatusBarManager

Utilisation de l'API privée (formalisée à partir du niveau 29 d'API?) Appelée StatusBarManager dans l'application Android, le panneau de notification (liste de notifications push) Je vais vous expliquer comment activer et désactiver l'affichage.

Code source de StatusBarManager

Le code source de StatusBarManager peut être trouvé ici (https://android.googlesource.com/platform/frameworks/base/+/android-4.3_r2.1/core/java/android/app/StatusBarManager.java).

Autorisations requises

Vous devez ajouter ce qui suit à AndroidManifest.xml. Ce n'est pas une autorisation d'exécution, ajoutez-la simplement à AndroidManifest.xml.

AndroidManifest.xml


<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>

Code source

C'est une classe privée, alors mettez-y un essai / capture pour que tout puisse arriver. Pour ouvrir le panneau, appelez android.app.StatusBarManager.expandNotificationsPanel.

Échantillon pour ouvrir le panneau


if(ContextCompat.checkSelfPermission(this, Manifest.permission.EXPAND_STATUS_BAR) != PackageManager.PERMISSION_GRANTED)
    return;

try {
    Object service = getSystemService("statusbar");
    Class<?> statusBarManager = Class.forName("android.app.StatusBarManager");
    Method expand = statusBarManager.getMethod("expandNotificationsPanel");
    expand.invoke(service);
}
catch (Exception e){
    e.printStackTrace();
}

Au contraire, lors de la fermeture du panneau, l'écran de réglage rapide sera fermé en même temps, mais android.app.StatusBarManager.collapsePanels sera appelé.

Échantillon pour fermer le panneau


if(ContextCompat.checkSelfPermission(this, Manifest.permission.EXPAND_STATUS_BAR) != PackageManager.PERMISSION_GRANTED)
    return;

try {
    Object service = getSystemService("statusbar");
    Class<?> statusBarManager = Class.forName("android.app.StatusBarManager");
    Method expand = statusBarManager.getMethod("collapsePanels");
    expand.invoke(service);
}
catch (Exception e){
    e.printStackTrace();
}

Recommended Posts

[Android] Comment activer / désactiver le panneau de notification à l'aide de StatusBarManager
Comment désactiver la barre de notification ChromeDriver (Java)
Comment utiliser OpenCV 4 sur Android et afficher la vue en direct de la caméra
Comment installer JDK 8 sur Windows sans utiliser le programme d'installation
Comment exécuter React et Rails sur le même serveur
Comment "évider" une vue sur Android
Comment installer et configurer l'outil de surveillance "Graphite" sur Ubuntu
Essayez d'utiliser le service sur Android Oreo
Comment détecter les conflits de microphone sur Android
Comment trouver les dizaines et les unités
Comment placer geckodriver (WebDriver de Selenium) sur le chemin à l'aide de la commande Maven
Comment résoudre le problème selon lequel la notification ne peut pas être demandée sur iOS14
[Android] Comment transmettre des images et recevoir des rappels lors du partage à l'aide de ShareCompat
Comment affiner le format d'image de la galerie sur Android, puis sélectionner et importer plusieurs images
[Ruby on Rails] Comment se connecter avec seulement votre nom et mot de passe en utilisant le bijou
Comment sortir Excel et PDF avec Excella
Comment exécuter une méthode et simuler avec JUnit
Comment jouer de la voix ou de la musique en utilisant javascript
Comment mettre en œuvre la fonction de chapelure avec Gretel
Si vous utilisez Android Room et que vous souhaitez modifier la définition de colonne
Comment trouver la distance et l'angle entre deux points sur un plan
Comment trouver le score total et le score moyen
[Java] Mémo sur la façon d'écrire la source
Comment partager côté hôte (Windows) et côté invité (CentOS 7) avec VirtualBox
[Docker] Comment mettre à jour à l'aide d'un conteneur dans Heroku et comment gérer l'erreur de migration
[Swift5] Comment arrondir, arrondir et arrondir les deuxième et troisième points minoritaires
[Ruby on Rails] Comment changer le nom de la colonne
[Android] Afficher les images et les caractères dans l'onglet ViewPager
[Android Studio] [Java] Comment réparer l'écran verticalement
[Android] Comment obtenir la langue de réglage du terminal
Comment convertir A en A et A en A en utilisant le produit logique et la somme en Java
Installez MySQL 5.6 sur CentOS6 [Comment spécifier la version]
(Ruby on Rails6) Comment créer un modèle et une table
Je souhaite simplifier la sortie du journal sur Android
Comment faire une capture d'écran avec l'émulateur Android Studio
Comment tester avec des images lors de l'utilisation d'ActiveStorage et de Faker
Comment mettre en œuvre facilement les achats intégrés à l'aide d'itemsstore <Implémentation: Android>
Différence entre Java et JavaScript (comment trouver la moyenne)
Application Android qui sélectionne et affiche des images de la galerie
Comment définir et décrire des variables d'environnement à l'aide de Rails zsh
Comment désactiver Set-Cookie de l'API sur la face avant
[Version 2020] Comment envoyer un e-mail à l'aide d'Android Studio Javamail
Comment créer une application à l'aide de Tensorflow avec Android Studio
Comment joindre une table sans utiliser DBFlute et SQL
Comment changer Java à l'ère d'OpenJDK sur Mac
Comment vérifier l'extension et la taille des fichiers téléchargés
Comment démarrer avec JDBC en utilisant PostgresSQL sur MacOS
Comment lire un fichier MIDI à l'aide de l'API Java Sound
Compressez et téléchargez plusieurs fichiers sur Firebase Storage sur Android.