我在一个活动中启动一系列警报,以便在特定时间后启动服务。服务启动后,我想取消该特定警报,而不是任何其他警报。
以下是启动闹钟的代码。
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);
请帮帮我。
答案 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的组件类。