2013-03-22 16 views
15

私は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); 
+0

http://stackoverflow.com/a/6435373/115145ボタンは、あなたが私の今、削除された答えにあなたのコメントに示されているAPIレベル11の、これはあなたの 'minSdkVersion'であることを支持し、そうあなたをしています私は引き出しをどのように閉じるか分かりませんが、問題ありません。私のエラーのために私の謝罪 - 私は正式にこれをサポートし始めたことを忘れていた。 – CommonsWare

+0

Np、多分私は、私のminSdkVersion = 11 ;-)を前もって述べたはずです –

答えて

1

[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"/> 

+0

ここには何ですか?そして、このコードは何をしますか? –

+0

@iDroidExplorer:cはコンテキストです。そして、私の質問で尋ねられたように、このコードは、拡張された通知バーパネルを閉じることができます。私は私のカスタム通知のボタンを押した後にそのコードを使用します。 –

+1

もっと完全な答えhttp://stackoverflow.com/a/16978341/506724 – falko

74

は、通知バーを折りたたむには、次の2つのコード行を使用して必要とされる機能するために。

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

このコードはプライベートAPIなしで動作するため、これは正解です。 – CeccoCQ

+0

あなたは私の時間を保存しました。ありがとう。 – BSKANIA

+2

これは答えとしてマークする必要があります.... – prince

関連する問題