Android:在服务中取消警报

时间:2014-05-30 07:42:39

标签: android service alarmmanager android-pendingintent

我在一个活动中启动一系列警报,以便在特定时间后启动服务。服务启动后,我想取消该特定警报,而不是任何其他警报。

以下是启动闹钟的代码。

Calendar calendar = Calendar.getInstance();
Intent intent = new Intent(StatAlarmActivity.this, AndroidService.class);
PendingIntent pIntent = PendingIntent.getService(StatAlarmActivity.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), i*24*60*60*1000, pIntent); //i varies, i is no of days after which the service will start

如何在服务启动后取消特定警报?我尝试了AndroidService中的代码,但是我无法在这里访问StartAlarmActivity.this和getSystemService。

Calendar calendar = Calendar.getInstance();
Intent intent = new Intent(StatAlarmActivity.this, AndroidService.class);
PendingIntent pIntent = PendingIntent.getService(StatAlarmActivity.this, 0, intent, 0);
AlarmManager alarm = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
alarm.cancel(pIntent);

请帮帮我。

1 个答案:

答案 0 :(得分:1)

如果要取消与您开始时不同的活动中的闹钟管理器,请尝试 getActivity()而不是 StatAlarmActivity.this

第一个参数是上下文。

来自http://developer.android.com/reference/android/content/Intent.html#Intent(android.content.Context,java.lang.Class)

语法:

public Intent(Context packageContext,Class cls)

参数: packageContext实现此类的应用程序包的上下文。 cls用于intent的组件类。