我怎样才能获得其他活动的背景?

时间:2014-03-08 13:54:55

标签: java android android-intent

我正在处理闹钟应用,但无法移除现有闹钟。我必须创建相同的待处理意图来删除活动中的警报,该警报列出了我的应用程序中的所有警报,但它不能按我的预期工作。我想从我用来添加警报的活动中获取“上下文”。

以下是从ListAddActivity添加警报的代码。

private void addAlarm()
{
    final int ALARM_CODE = this.getAlarmCode(1);
    final int HOUR_OF_DAY = vo.getHour1();
    final int MINUTE = vo.getMinute1();

    AlarmManager alarmManager = (AlarmManager) getApplicationContext()
            .getSystemService(Context.ALARM_SERVICE);

    Calendar calendar = CalendarCreator.getCalendar(HOUR_OF_DAY, MINUTE);
    Intent intent = new Intent(ListAddActivity.this, PushMainActivity.class);

    PendingIntent pendingIntent = PendingIntent.getActivity(
            ListAddActivity.this, ALARM_CODE, intent,
            PendingIntent.FLAG_UPDATE_CURRENT);

    alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
            calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY,
            pendingIntent);
}

以下是从ListMainActivity中删除预定闹钟的代码。

private void removeAlarm(int number)
{
    final int alarmCode = AlarmCodeCreator.CreateNum(1, clickedPosition, 0);
    System.out.println(alarmCode);
    AlarmManager alarmManager = (AlarmManager)getSystemService(Context.ALARM_SERVICE);
    Intent intent = new Intent(getApplicationContext(),
            PushMainActivity.class);
    PendingIntent pendingIntent = PendingIntent.getBroadcast(
            getApplicationContext(), alarmCode, intent, 
            PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pendingIntent);
}

正如你所看到的,我创建了一个自己的算法来创建一个alarmCode,所以我可以检索它,并且也有相同的标志。然而,获得相同的“背景”是我正在努力的。

1 个答案:

答案 0 :(得分:2)

这与上下文无关。您安排的意图是使用getActivity创建的。这与使用getBroadcast创建的意图不同。你不能用后者来取消前者。

(已编辑添加代码)

Intent intent = new Intent(
    getApplicationContext(),
    PushMainActivity.class);
PendingIntent pendingIntent = PendingIntent.getActivity(
    ListAddActivity.this,
    ALARM_CODE,
    intent,
    PendingIntent.FLAG_UPDATE_CURRENT);
alarmManager.cancel(pendingIntent);