通知未被解除(Android) [英] Notification is not being dismissed (Android)

查看:70
本文介绍了通知未被解除(Android)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如果点击操作,通知 setAutoCancel(true) 不起作用

我有一个通知,其中包含一个操作.当我点击通知时,它会从列表中删除.但是,当我单击操作时,它成功完成了操作(即拨打电话),但是当我返回到通知列表时,它仍然存在.AlarmReceiver的相关代码:

I have a notification with an action within it. When I tap on the notification it gets removed from the list. However, when I click on the Action it successfully completes the Action (namely makes a call), but when I return to the list of notifications, it remains there. Relative code of the AlarmReceiver:

public class AlarmReceiver extends BroadcastReceiver {
Meeting meeting;

/**
 * Handle received notifications about meetings that are going to start
 */
@Override
public void onReceive(Context context, Intent intent) {

    // Get extras from the notification intent
    Bundle extras = intent.getExtras();
    this.meeting = extras.getParcelable("MeetingParcel");

    // build notification pending intent to go to the details page when click on the body of the notification
    Intent notificationIntent = new Intent(context, MeetingDetails.class);
    notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    notificationIntent.putExtra("MeetingParcel", meeting);      // send meeting that we received to the MeetingDetails class
    notificationIntent.putExtra("notificationIntent", true);    // flag to know where the details screen is opening from

    PendingIntent pIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);

    // build intents for the call now button
    Intent phoneCall = Call._callIntent(meeting);
    if (phoneCall != null) {

        PendingIntent phoneCallIntent = PendingIntent.getActivity(context, 0, phoneCall, PendingIntent.FLAG_CANCEL_CURRENT);

        int flags = Notification.FLAG_AUTO_CANCEL;

        // build notification object
        NotificationCompat.Builder builder = new NotificationCompat.Builder(context);
        Notification notification = builder.setContentTitle("Call In")
                .setContentText(intent.getStringExtra("contextText"))
                .setTicker("Call In Notification")
                .setColor(ContextCompat.getColor(context, R.color.colorBluePrimary))
                .setAutoCancel(true)                    // will remove notification from the status bar once is clicked
                .setDefaults(Notification.DEFAULT_ALL)  // Default vibration, default sound, default LED: requires VIBRATE permission
                .setSmallIcon(R.drawable.icon_notifications)
                .setStyle(new NotificationCompat.BigTextStyle()
                        .bigText(meeting.description))
                .addAction(R.drawable.icon_device, "Call Now", phoneCallIntent)
                .setCategory(Notification.CATEGORY_EVENT)   // handle notification as a calendar event
                .setPriority(Notification.PRIORITY_HIGH)    // this will show the notification floating. Priority is high because it is a time sensitive notification
                .setContentIntent(pIntent).build();

        notification.flags = flags;

        // tell the notification manager to notify the user with our custom notification
        NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
        notificationManager.notify(0, notification);
    }
  }
}

推荐答案

我今天遇到了这个问题,发现 FLAG_AUTO_CANCEL 和 setAutoCanel(true) 都在点击通知时起作用,但不适用于动作点击

I faced this problem today, and found that FLAG_AUTO_CANCEL and setAutoCanel(true), both work when click on notification, but not work for action click

很简单,在目标服务或活动的动作中,取消通知

so simply, in the target service or activity of action, cancel the notification

NotificationManager manager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE);
manager.cancelAll();

或者如果有更多通知

manager.cancel(notificationId);

这篇关于通知未被解除(Android)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆