2

我正在构建一个报警应用程序。我现在添加的功能之一就是闹铃的音量。当用户设置闹钟时,他们可以用SeekBar选择闹钟的音量。所以,当警报熄灭时,它的音量应该设置为用户设置的值。为此,我需要知道已经调用了哪个特定的警报。我已经从数据库中识别出每个PendingIntent与警报的ID。我的问题是我不知道如何在闹钟响起后再次找回这个ID。如何获取由AlarmManager调用的唯一pendingIntent的ID?

正如你所看到的,我这是怎么识别每一个的PendingIntent通过传递alarm.getID()

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的唯一标识符?换句话说,我怎么知道哪个闹钟正在被触发?

回答

2

首先,原谅我的英语,这不是很好。 我认为你很可能已经找到了解决这个问题的解决方案,但我有同样的疑问,我无法很容易地找出答案。所以经过很多研究,我找出了一条路。对于检索来自警报器的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);

我希望有用!