如何在android中取消取消关闭通知

如何在android中取消取消关闭通知,android,notifications,android-notifications,android-pendingintent,Android,Notifications,Android Notifications,Android Pendingintent,嗨,我是新来的 我为通知编写了这段代码 PendingIntent pendingIntent = PendingIntent.getActivity(context, leadidforstatus, myIntent, Intent.FLAG_ACTIVITY_NEW_TASK); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context) .setSmallIcon(R.dra

嗨,我是新来的

我为通知编写了这段代码

PendingIntent pendingIntent = PendingIntent.getActivity(context, leadidforstatus,
    myIntent, Intent.FLAG_ACTIVITY_NEW_TASK);

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
    .setSmallIcon(R.drawable.noti)
    .setContentTitle("LMS notification")
    .setContentIntent(pendingIntent)
    .setContentText(intent.getStringExtra("messagenotify"))
    .setAutoCancel(true);

i = (int) System.currentTimeMillis();
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(i, mBuilder.build());
在其中,我设置了一个通知列表。其中有些显示,有些不显示。但我想取消所有未显示的通知

PendingIntent pendingIntent = PendingIntent.getActivity(context, leadidforstatus,
    myIntent, Intent.FLAG_ACTIVITY_NEW_TASK);

NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
    .setSmallIcon(R.drawable.noti)
    .setContentTitle("LMS notification")
    .setContentIntent(pendingIntent)
    .setContentText(intent.getStringExtra("messagenotify"))
    .setAutoCancel(true);

i = (int) System.currentTimeMillis();
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(i, mBuilder.build());
我使用了mNotificationManager.canclall,但这是“取消”,仅显示通知。
提前谢谢

我认为您正在搜索类似的内容

检查一下那篇帖子上的答案。使用该id取消该特定通知

我想你代码中的id部分是这样的

i = (int) System.currentTimeMillis();

NotificationManager维护所有NotificationList的列表,并在此列表上执行取消或取消所有操作

我尝试在notify、enqueueNotificationWithTag和cancelAllNotification中搜索NotificationManager.java和NotificationManagerService.java的Google源代码,但没有实现取消先前取消的通知

根据您的评论,若您的用户被删除,并且他的通知到达,那个么用户已经被删除,所以通知并没有任何意义

i = (int) System.currentTimeMillis();
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.notify(i, mBuilder.build());
// i should be Id for this notification, i think you want to pass 
// time in mili second here

我认为这里的问题是,通知在创建后立即启动,并且您没有使用AlarmManager来安排此通知

解决方案应该是通过AlarmManager安排警报,该管理器将触发上述通知代码

这需要三个部分:

注册BroadCastReceiver并在其被触发时生成通知:

public class UtilityReceiver  extends BroadcastReceiver {

@Override
public void onReceive(Context context, Intent intent) {
   // .. Here is where you really want to build the notification and notify
   // This will be triggered by the AlarmManager from the Code below
   PendingIntent pendingIntent = PendingIntent.getActivity(context, leadidforstatus, myIntent, Intent.FLAG_ACTIVITY_NEW_TASK);

 NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(context)
               .setSmallIcon(R.drawable.noti)
               .setContentTitle("LMS notification")
               .setContentIntent(pendingIntent)
               .setContentText(intent.getStringExtra("messagenotify"))
               .setAutoCancel(true);

     i = (int) System.currentTimeMillis();
     NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
     mNotificationManager.notify(i, mBuilder.build());

}
使用AlarmManager计划警报,以发送上面的接收器正在收听的广播:

        // Create an Intent to Launch
        Intent notificationIntent = new Intent(context, UtilityReceiver.class);

        // Use a Pending Intent to Launch the Alarm
        PendingIntent notificationPendingIntent = PendingIntent.getBroadcast(context,
                            PendingIntent.FLAG_ONE_SHOT, notificationIntent, Intent.FILL_IN_DATA);
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);
        alarmManager.set(AlarmManager.RTC_WAKEUP, timeForAlarmInMillis, notificationPendingIntent);
然后,当您遇到不再需要为应用程序显示通知的情况时,您会告诉AlarmManager通过重建挂起的意图并使用AlarmManager取消,将其从警报队列中删除

       // Create an Intent to Launch
        Intent notificationIntent = new Intent(context, UtilityReceiver.class);

        // Use a Pending Intent to Launch the Alarm
        PendingIntent notificationPendingIntent = PendingIntent.getBroadcast(context,
                            PendingIntent.FLAG_ONE_SHOT, notificationIntent, Intent.FILL_IN_DATA);
        AlarmManager alarmManager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE);

        // *********Important this will cancel all the Matching PendingIntents
        alarmManager.cancel(notificationPendingIntent);

祝您好运,请确保在您的活动或清单中注册您的接收者。

您希望取消所有取消通知的要求是什么?您怎么能说有些已显示,有些未显示NotificationManager会显示通过idI传递给notify的每个通知,其中有一些用户。我将其中一个用户通知设置为明天。但不幸的是他已经走了。所以我删除用户。关于这一点,我也想删除他的通知。这不是Shankar所说的。。取消将仅取消以前显示的通知。。将向用户显示一次。。我们想取消挂起的通知now@kushal你们有解决这个问题的办法吗?