在内容点击上删除通知notification.builder

时间:2013-08-27 15:27:37

标签: android notifications android-notifications android-pendingintent

我有一个包含2个操作的通知。一个意图打开一个Activity,另一个打开浏览器网站。

我的代码:

    Intent intent1 = new Intent(context, NotificationClickActivity.class);
    PendingIntent pIntent1 = PendingIntent.getActivity(context, 0, intent1, PendingIntent.FLAG_CANCEL_CURRENT);

    String url = "http://www.google.com";
    Intent browserIntent = new Intent(Intent.ACTION_VIEW);
    browserIntent.setData(Uri.parse(url));
    PendingIntent pBrowserIntent = PendingIntent.getActivity(context, 1, browserIntent, PendingIntent.FLAG_CANCEL_CURRENT);



    // Build notification
    Notification noti = new Notification.Builder(context)
            .setContentTitle(title)
            .setContentText(shortDescription)
            .setStyle(new Notification.BigTextStyle().bigText(longDescription))
            .setSmallIcon(R.drawable.small_defaulticon)
            .setAutoCancel(true)
            .setContentIntent(pIntent1)
            .addAction(R.drawable.playstore_icon_32, "Dettagli", pIntent1)
            .setContentIntent(pBrowserIntent)
            .addAction(R.drawable.small_defaulticon, "Vai al sito", pBrowserIntent).build();


    NotificationManager notificationManager = 
      (NotificationManager) context.getSystemService(NOTIFICATION_SERVICE);

    // Hide the notification after its selected
    noti.flags |= Notification.FLAG_AUTO_CANCEL;
    notificationManager.notify(0, noti); 

如果我点击通知它会消失,但如果我点击其中一个动作,它会打开正确的意图,但通知不会被清除。 我也尝试.setDeleteIntent(myPendingIntent),但没有......我想知道我哪里出错...

我的通知屏幕......

notification

谢谢!

3 个答案:

答案 0 :(得分:4)

按下操作按钮时,通知永远不会被解除。它只是向您发送相关的意图。如果您希望将其解雇,则需要致电NoficationManager.cancel(int id)以自行取消。您通常会使用相同的方法来处理动作按钮意图。

您尝试使用的

Notification.FLAG_AUTO_CANCEL标志仅适用于通知正文,而不适用于操作按钮。

答案 1 :(得分:1)

在您的操作启动的活动中使用cancel()来取消通知

答案 2 :(得分:0)

试试这个

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
    .setDefaults(Notification.DEFAULT_ALL);

并尝试在notificationManager.notify(uniqueId, noti);

中发送uniqueId