Android 如何删除特定通知

Android 如何删除特定通知,android,notifications,Android,Notifications,我有一个问题,我想为我的应用程序发出通知。首先我建立一个通知,然后如果我不想要它,那么我想再次删除它。 我如何才能做到这一点,我可以删除一个特定的通知 我从一个SetonitmlongClickListener开始建造这座建筑 主要活动: if (isNotificationVisible()){ NotificationManager mNotificationManager

我有一个问题,我想为我的应用程序发出通知。首先我建立一个通知,然后如果我不想要它,那么我想再次删除它。 我如何才能做到这一点,我可以删除一个特定的通知

我从一个SetonitmlongClickListener开始建造这座建筑

主要活动:

                            if (isNotificationVisible()){
                                NotificationManager mNotificationManager =
                                        (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
                                mNotificationManager.cancel(1122334455);
                            }
                            else {

                                int beginday = begincalendar.get(Calendar.DAY_OF_MONTH);
                                int beginyear=begincalendar.get(Calendar.YEAR);
                                int beginmonth=begincalendar.get(Calendar.MONTH);
                                Intent myIntent = new Intent(MainActivity.this, AlarmReceiver.class);
                                myIntent.setAction(String.valueOf(id));
                                pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0, myIntent,0);
                                AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE);
                                alarmManager.set(AlarmManager.RTC, begincalendar.getTimeInMillis(), pendingIntent);

                            }
通知服务类:

    public class NotificationService extends Service {

    @Override
    public IBinder onBind(Intent arg0)
    {
        // TODO Auto-generated method stub
        return null;
    }

    @Override
    public void onCreate()
    {
        // TODO Auto-generated method stub
        super.onCreate();
    }

    @SuppressWarnings("static-access")
    @Override
    public void onStart(Intent intent, int startId)
    {
        NotificationCompat.Builder mBuilder =
                new NotificationCompat.Builder(this)
                        .setSmallIcon(R.drawable.ic_launcher)
                        .setContentTitle("title")
                        .setOnlyAlertOnce(true)
                        .setContentText("context")
                        .setDefaults(Notification.DEFAULT_SOUND | Notification.DEFAULT_VIBRATE);


        Intent resultIntent = new Intent(this, MainActivity.class);
        TaskStackBuilder stackBuilder = TaskStackBuilder.create(this);
        stackBuilder.addParentStack(MainActivity.class);
        stackBuilder.addNextIntent(resultIntent);
        PendingIntent resultPendingIntent =
                stackBuilder.getPendingIntent(
                        0,
                        PendingIntent.FLAG_UPDATE_CURRENT
                );
        mBuilder.setContentIntent(resultPendingIntent);
        NotificationManager mNotificationManager =
                (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
        mNotificationManager.notify(1122334455, mBuilder.build());
    }


}
AlarmReceiver类别:

    public class AlarmReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent)
    {
        Intent service1 = new Intent(context, NotificationService.class);
        context.startService(service1);

    }
}
通知是否可见:

private boolean isNotificationVisible() {
    Intent notificationIntent = new Intent(context, MainActivity.class);
    PendingIntent test = PendingIntent.getActivity(context, 1122334455, notificationIntent, PendingIntent.FLAG_NO_CREATE);
    return test != null;

}

使用NotificationManager的public void cancel(int id)方法清除通知

因此,假设您希望在单击按钮时取消此通知,然后在onClick()方法中添加以下代码


有关更多详细信息,请参见

我还可以检查通知是否刚刚存在,然后再删除它。我有一个列表视图,每一行都可以做一个通知?没有直接的方法,但肯定有解决办法。检查一下刚刚编辑好的,你能告诉洛克我的错误在哪里吗?我正在看。同时,我检查并发现了另一种称为deleteIntent的方法,即在删除通知时调用该方法。
mNotificationManager.cancel(1122334455); // parameter is your notification ID