Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/366.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通知在特定时间自动取消_Java_Android_Notifications_Broadcastreceiver_Alarmmanager - Fatal编程技术网

Java 通知在特定时间自动取消

Java 通知在特定时间自动取消,java,android,notifications,broadcastreceiver,alarmmanager,Java,Android,Notifications,Broadcastreceiver,Alarmmanager,我是Java编码的初学者,目前正在编写一个Android项目。现在,我面临一个问题。我希望我的应用程序在特定时间自动删除通知 在用户单击通知后,我成功地取消了通知。但是,同时,如果用户没有对通知作出反应,我还希望通知在特定时间后自动消失 请告诉我该怎么做。如果可能的话,请给我举一些例子 您可以在调用该方法以显示通知后立即启动计时器,并在计时器的onFinish()内添加如下内容: NotificationManager nMgr = (NotificationManager) getSystem

我是Java编码的初学者,目前正在编写一个Android项目。现在,我面临一个问题。我希望我的
应用程序
在特定时间自动删除
通知

在用户单击
通知
后,我成功地取消了
通知
。但是,同时,如果用户没有对
通知作出反应,我还希望
通知在特定时间后自动消失


请告诉我该怎么做。如果可能的话,请给我举一些例子

您可以在调用该方法以显示通知后立即启动计时器,并在计时器的onFinish()内添加如下内容:

NotificationManager nMgr = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
nMgr.cancelAll();

您可以设置计时器或类似警报的东西,当满足条件时,使用以下方法取消它:

 //clear all pending notifications
        String ns = Context.NOTIFICATION_SERVICE;
        NotificationManager nMgr = (NotificationManager) context.getSystemService(ns);
        nMgr.cancelAll();

您可以使用
定时器
进行所需的定时,并删除
通知
您可以使用
取消()

如果要在2秒钟后删除通知,可以使用:

    Timer timer=new Timer();
    TimerTask task=new TimerTask() {

        @Override
        public void run() {
            nMgr.cancel(notification-id);
        }
    };

    timer.schedule(task, 2000);

我建议使用handler方法从通知栏中删除通知。您可以在处理程序处以毫秒为单位指定时间长度。只有在输入的时间之后,才会调用一次

 Handler h = new Handler();
long delayInMilliseconds = 5000;
h.postDelayed(new Runnable() {
    public void run() {
        mNotificationManager.cancel(YourNotificationId);
    }
}, delayInMilliseconds);
    Timer timer=new Timer();
    TimerTask task=new TimerTask() {

        @Override
        public void run() {
            nMgr.cancel(notification-id);
        }
    };

    timer.schedule(task, 2000);
 Handler h = new Handler();
long delayInMilliseconds = 5000;
h.postDelayed(new Runnable() {
    public void run() {
        mNotificationManager.cancel(YourNotificationId);
    }
}, delayInMilliseconds);