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

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

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

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

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

所以在闹钟响起时调用的 Activity 中,我想做类似的事情

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

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

最佳答案

首先,请原谅我的英语,不是很好。 我认为您很可能已经找到了解决此问题的方法,但我也有同样的疑问,而且我无法轻易找到答案。所以经过多次研究,我想出了一个办法。为了从触发的警报中检索 ID,可以将 ID 放在 Intent 上:

//创建 Intent Intent intent = new Intent(context,MyClass.class); //店铺编号 intent.putExtra("id", yourId);

然后,使用此 Intent 创建 PendingIntent,用于设置警报。当警报响起时,方法 onReceive(context, intent) 将接收用于创建 PendingIntent 的 Intent ,因此可以在该方法上检索 id:

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

希望有用!

关于android - 如何获取AlarmManager调用的唯一pendingIntent的ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16256000/

相关文章:

android - 更新 Gradle 和插件后出错

android - 如何在Android中动态播放音频文件

android - 如何使用 JSON 对象传递 JSON 数组

java - 开始 Activity 未开始

java - 安卓 : Determine which checkbox is checked in listview from the Main activity button

java - 如何在 finish() 中开始一个 Activity

android - 如何使用机器学习和神经网络快速构建图像识别应用程序原型(prototype)?

Android WebView 不显示图像

java - 使用 Android-Camera2 API 访问 USB 摄像头

android - 如何在 sharedpreferences 中保存和检索多个值?