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.
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).
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"/>
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