personalizar oreo ocultar notificaciones iconos estado como color cambiar barra baja aparece activar android notifications statusbar

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);