oreo - ocultar iconos de la barra de estado android
Cómo cerrar la barra de estado/panel de notificaciones después de hacer clic en el botón de notificación (2)
He navegado por Stackoverflow y he visto que esta pregunta ha sido formulada, pero no encontré ninguna solución.
Tengo una notificación personalizada con 2 botones. Quiero que el panel de la barra de estado se cierre después de presionar un botón en esa notificación, pero no sé cómo. Si presiono la notificación en sí (por lo tanto, contentIntent), entonces el panel se cierra, que es lo que también quiero para mis botones.
Aquí está mi código de notificación:
Notification notification = new Notification(R.drawable.icon, "Service running", System.currentTimeMillis());
notification.flags |= Notification.FLAG_ONGOING_EVENT;
notification.contentIntent = openIntent;
RemoteViews contentView = new RemoteViews(getPackageName(), R.layout.notification_layout);
contentView.setOnClickPendingIntent(R.id.button1, stopIntent);
contentView.setOnClickPendingIntent(R.id.button2, addIntent);
notification.contentView = contentView;
notificationManager.notify(NOTIFICATION_ID, notification);
Ok he encontrado la solución. No es una API pública, pero funciona (por el momento):
Object sbservice = c.getSystemService( "statusbar" );
Class<?> statusbarManager = Class.forName( "android.app.StatusBarManager" );
Method hidesb = statusbarManager.getMethod( "collapse" );
hidesb.invoke( sbservice );
Para que esto funcione
<uses-permission android:name="android.permission.EXPAND_STATUS_BAR"/>
es necesario
Utilice la siguiente línea de código dos para contraer la barra de notificaciones.
Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
context.sendBroadcast(it);