2012-08-31 129 views
0

每次我点击通知时,活动都会弹出在屏幕上,我用它在状态窗口中触发通知。如何在点击时清除Android上的通知

我想在用户点击时清除通知,但每次都会打开活动。

我尝试使用标志不仅在通知上,而且在PendingIntent和Intents上。

我的代码:

NotificationManager nm = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); 

Notification not = new Notification(R.drawable.ic_launcher, 
     "this is not important", System.currentTimeMillis()); 

Context context = MainActivity.this; 

CharSequence title = "You have been notified"; 
CharSequence details = "contiue with work"; 

not.flags = Notification.FLAG_AUTO_CANCEL; 

Intent intent = new Intent(context, MainActivity.class); 
PendingIntent pending = PendingIntent.getActivity(context, 0, intent, PendingIntent. FLAG_ONE_SHOT); 

not.setLatestEventInfo(context, title, details, pending); 
nm.notify(0, not); 

也:

PendingIntent pending = PendingIntent.getActivity(context, 0, intent, 0); 

和:

PendingIntent pending = PendingIntent.getActivity(context, 0, intent, Notification.FLAG_AUTO_CANCEL); 

我每次点击通知活动都会在屏幕上,我只是想清楚通知。

这里是logcat的

09-01 00:21:10.910: E/AndroidRuntime(330): FATAL EXCEPTION: main 
09-01 00:21:10.910: E/AndroidRuntime(330): java.lang.IllegalArgumentException: contentIntent required: pkg=nipun.notify id=0 notification=Notification(vibrate=null,sound=null,defaults=0x0,flags=0x10) 
09-01 00:21:10.910: E/AndroidRuntime(330): at android.os.Parcel.readException(Parcel.java:1326) 
09-01 00:21:10.910: E/AndroidRuntime(330): at android.os.Parcel.readException(Parcel.java:1276) 
09-01 00:21:10.910: E/AndroidRuntime(330): at android.app.INotificationManager$Stub$Proxy.enqueueNotificationWithTag(INotificationManager.java:274) 
09-01 00:21:10.910: E/AndroidRuntime(330): at android.app.NotificationManager.notify(NotificationManager.java:111) 
09-01 00:21:10.910: E/AndroidRuntime(330): at android.app.NotificationManager.notify(NotificationManager.java:91) 
09-01 00:21:10.910: E/AndroidRuntime(330): at nipun.notify.MainActivity$1.onClick(MainActivity.java:49) 
09-01 00:21:10.910: E/AndroidRuntime(330): at android.view.View.performClick(View.java:2485) 
09-01 00:21:10.910: E/AndroidRuntime(330): at android.view.View$PerformClick.run(View.java:9080) 
09-01 00:21:10.910: E/AndroidRuntime(330): at android.os.Handler.handleCallback(Handler.java:587) 
09-01 00:21:10.910: E/AndroidRuntime(330): at android.os.Handler.dispatchMessage(Handler.java:92) 
09-01 00:21:10.910: E/AndroidRuntime(330): at android.os.Looper.loop(Looper.java:123) 
09-01 00:21:10.910: E/AndroidRuntime(330): at android.app.ActivityThread.main(ActivityThread.java:3683) 
09-01 00:21:10.910: E/AndroidRuntime(330): at java.lang.reflect.Method.invokeNative(Native Method) 
09-01 00:21:10.910: E/AndroidRuntime(330): at java.lang.reflect.Method.invoke(Method.java:507) 
09-01 00:21:10.910: E/AndroidRuntime(330): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839) 
09-01 00:21:10.910: E/AndroidRuntime(330): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597) 
09-01 00:21:10.910: E/AndroidRuntime(330): at dalvik.system.NativeStart.main(Native Method) 

回答

0

你不应该的待定意图

删除以下行

PendingIntent pending = PendingIntent.getActivity(context, 0, intent, PendingIntent. FLAG_ONE_SHOT); 

,并发送空到

not.setLatestEventInfo(context, title, details, null); 
+0

非常感谢..现在不会触发这项活动。但仍然当我点击通知它不会清除通知窗口。我为此做了什么? –

+0

试试这个not.flags | = Notification.FLAG_AUTO_CANCEL; – nandeesh

+0

代码与冰淇淋运行良好,但应用程序与姜饼崩溃。任何想法为什么发生这种情况? –