2011-08-12 26 views
37

完了したタイマーについてユーザーに警告する通知を発したいのですが、通知をクリックしたときに意図を持っていないとします。Android - 通知マネージャー、意図のない通知があります

私は意図

String ns = Context.NOTIFICATION_SERVICE; 
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(ns); 

int icon = R.drawable.icon; 
CharSequence tickerText = "Hello"; 
long when = System.currentTimeMillis(); 

Notification notification = new Notification(icon, tickerText, when); 

CharSequence contentTitle = "My notification"; 
CharSequence contentText = "Hello World!"; 

notification.setLatestEventInfo(context, contentTitle, contentText, null); 
mNotificationManager.notify(HELLO_ID, notification); 
+2

このnullメソッドについての警告 - 私はこの回答も探していました。私のHTC Desireでは、これはデバイスの再起動を引き起こします!ブート時に通知が作成されて以来、かなり悪いです。私はブートリブートブートサイクルに入っています... –

+1

また、興味深いことにnullは4.0エミュレータで正常に動作します。それは私の銀河S2(2.3)にFCを引き起こします。 – Timmmm

+0

その本当に便利です。たくさんありがとうございます – Sakthimuthiah

答えて

76

あなたはsetLatestEventInfo()の最後のパラメータがPendingIntentないIntentあるパラメータに代わり

notification.setLatestEventInfo(context, contentTitle, contentText, null);

+0

作品!驚くばかり。 +1 –

+0

私は放送受信者から電話をかけていて、ヌル例外が発生していることがわかりました。しかし、私はこのクラスを試してみました(いくつかの男は通知クラスを作っていました)とその華麗な - それをチェックしてくださいhttp://stackoverflow.com/questions/5626946/call-notification-from-broadcastreceiver – Garbit

+0

これは本当に便利でした。私は分かりませんが、意図が空の構図で作ったものは何でしょうか、4.0 +と2.2の両方で完璧に動作します:)ありがとう! –

1

興味深い質問にnullを渡して試してみたと私は、これが動作するかどうかを確認したいと思います。私は少し掘り下げて、同じ質問をしている多くのpplを見つけました。 cburskは、アクティビティではなく通知のインテントにダイアログを渡すという、この意図された機能を得るためのハックを見つけたようです。私はDialogが何もしないと思っています。または、すぐに解雇するようにプログラムされています。しかし、私は現在looking at this threadでテストしています。

9

null 

PendingIntent.getActivity(getApplicationContext(), 0, new Intent(), 0) 

を渡すことができます。タップしたときに空のPendingIntentを渡すことを通知する必要がある場合は、次のようにします。PendingIntent.getActivity(context、0、null、0)

+0

Botこれとaccepeted答えはちゃんと働くが、これはより単純で、 'nullを渡すだけで空の' Intent'を作る必要はない。 –

+1

'null'を渡すとアンドロイド4.1で強制終了します – Darcy