Как закрыть панель состояния/панель уведомлений после нажатия кнопки уведомления - программирование

Как закрыть панель состояния/панель уведомлений после нажатия кнопки уведомления

Я просматривал Stackoverflow и видел, что этот вопрос задан, но я не нашел никакого решения.

У меня есть пользовательское уведомление с 2 кнопками. Я хочу, чтобы панель панели состояния закрылась после того, как я нажму кнопку на этом уведомлении, но не знаю, как это сделать. Если я нажимаю на это уведомление (так что contentIntent), тогда панель закрывается, что я также хочу для своих кнопок.

Здесь мой код уведомления:

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

Ответ 1

Хорошо, я нашел решение. Это не открытый API, но он работает (на данный момент):

Object sbservice = c.getSystemService( "statusbar" );
                    Class<?> statusbarManager = Class.forName( "android.app.StatusBarManager" );
                    Method hidesb = statusbarManager.getMethod( "collapse" );
                    hidesb.invoke( sbservice );

Чтобы это работало

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

требуется

Ответ 2

Используйте следующую две строки кода, чтобы свернуть панель уведомлений.

Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
context.sendBroadcast(it);