如何获取AlarmManager调用的唯一pendingIntent的ID?

时间:2013-04-27 19:23:44

标签: android android-intent android-activity alarmmanager android-pendingintent

我正在构建一个警报应用程序。我现在添加的功能之一是闹钟的音量。当用户设置闹钟时,他们可以使用SeekBar选择闹钟的音量。因此,当闹钟响起时,它的音量应设置为用户设置的音量。要做到这一点,我需要知道已经调用了哪个特定的警报。我已经从数据库中识别出每个PendingIntent的警报ID。我的问题是,我只是不知道如何在闹钟响起后再次检索此ID。

正如您所看到的,这就是我通过传递alarm.getID()来识别每个PendingIntent的方式:

PendingIntent pendingAlarmIntent = PendingIntent.getBroadcast(
ChangeAlarmActivity.this, (int)alarm.getID(), alarmIntent, 0);

所以在我的活动中,当闹钟响起时我会调用

int id = pendingIntent.getID();
Alarm alarm = database.getAlarm(id);
int volume = alarm.getVolume();

因此,如何在警报打开后调用的Activity中获取PendingIntent的唯一标识符?换句话说,我如何知道正在设置哪个警报?

1 个答案:

答案 0 :(得分:1)

首先,请原谅我的英语,这不是很好。 我认为你很可能已经找到了解决这个问题的方法,但我有同样的疑问,我无法轻易找到答案。经过多次研究,我找到了一条路。为了从警报中检索一个ID,可以在意图上添加一个ID:

// create intent Intent intent = new Intent(context,MyClass.class); // store id intent.putExtra("id", yourId);

在此之后,使用此意图创建PendingIntent,用于设置警报。当警报触发时,方法onReceive(context, intent)将收到用于创建PendingIntent的意图,因此可以在方法上检索id:

// retrieves id long id = intent.getLongExtra("id", -1);

我希望有用!