web-dev-qa-db-ja.com

通知ボタンをクリックした後にステータスバー/通知パネルを閉じる方法

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);
28
Toni Kanoni

OK解決策を見つけました。これはパブリック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
Toni Kanoni

次の2つのコード行を使用して、通知バーを折りたたみます。

Intent it = new Intent(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
context.sendBroadcast(it);
103
Sam Lu