2011-09-13 122 views
2

下面是我设置每天重复闹钟的代码。现在我需要在2天后停止报警。我试图在添加2天后停止警报,但它不起作用。请任何人帮助我。如何在特定时间2天后停止报警服务?

Intent myIntent = new Intent(this, MyAlarmService.class); 

    pendingIntent = PendingIntent.getService(this, (int) System.currentTimeMillis(), myIntent, 0); 

    AlarmManager alarmManager = (AlarmManager)getSystemService(ALARM_SERVICE); 

    Calendar calendar = Calendar.getInstance(); 
    calendar.set(Calendar.HOUR_OF_DAY, hour1); 
    calendar.set(Calendar.MINUTE, min1); 
    calendar.set(Calendar.SECOND, 0); 

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 24*60*60*1000, pendingIntent); 

    Toast.makeText(this, "Start Daily Alarm", Toast.LENGTH_LONG).show(); 

    //trying to cancel after 2 days 
    // add days to current date using Calendar.add method 

    calendar.add(Calendar.DATE, 2);  
    pendingIntent = PendingIntent.getService(this, (int) System.currentTimeMillis(), myIntent, 0); 
    AlarmManager alarmManagerstop = (AlarmManager)getSystemService(ALARM_SERVICE); 
    alarmManagerstop.cancel(pendingIntent);  
+0

你有什么解决方案吗? – Nik

回答

2

这里您将第二个参数中的系统时间以毫秒为单位。

PendingIntent.getService(this, (int) System.currentTimeMillis(), myIntent, 0); 

第二个参数是请求代码通过,所以你必须做这样的事情。

private static int REQUEST = 1; 

您必须为您设置的每个闹钟保留此请求代码。请注意,如果您通过此请求代码具有相同的值,那么它将覆盖您的闹钟。所以你必须传递唯一的请求代码。

对于停止报警相同请求代码需要找到的PendingIntent对象,并传递给alarm.cancel方法像这样

private static int REQUEST = 1; 
PendingIntent.getService(this, REQUEST, myIntent, 0); 
AlarmManager alarmManagerstop = (AlarmManager)getSystemService(ALARM_SERVICE); 
alarmManagerstop.cancel(pendingIntent); 

,当你使用的是在每一个milisecond使更改系统milisecond请求代码也经常改变。要使用这个毫秒,你可以存储任何静态变量,然后你可以使用相同的值。

+0

对不起,我没有得到。我尝试使用alarmmanagerstop中第二个参数的请求。但它不工作,也需要在2天后自动停止振铃。 – sachi

相关问题