如何从Alarm Manager获取警报ID

时间:2016-07-25 21:29:30

标签: android alarmmanager android-alarms

我正在创建一个剩余应用程序,它在指定的时间启动警报并重复,直到用户停止它。

我生成一个唯一的数字并将其传递给我的AlarmManager类

        PendingIntent pendingIntent = PendingIntent.getBroadcast(
                this.getApplicationContext(), remainderID.intValue(), intent, 0);

// remainderID is unqiue value, generated from Database. 

我知道取消闹钟的步骤,但我无法理解如何在广播接收器类中获取此ID。

请指导我。

2 个答案:

答案 0 :(得分:1)

您可以使用putExtra()将此ID传递给意图,如下所示

intent.putExtra("ID", remainderID.intValue();

然后将此意图传递给待处理的意图。

在广播接收器类中,您可以按如下方式检索它:

intent.getIntExtra("ID", -1);
// Make sure the name is exactly the same in put and get
// Put the default value as an int you're sure doesn't exist in your database

我希望这会有所帮助!

答案 1 :(得分:0)

PendingIntent pendingIntent = PendingIntent.getBroadcast(
            this.getApplicationContext(), remainderID.intValue(), intent, 0);

将您需要的唯一代码和其他任何数据添加到上面的意图中,并在下面的AlarmService类中提取相同的意图。

public class AlarmService extends IntentService {

    @Override
    public void onHandleIntent(Intent intent) {

        if (intent == null) return;

        try
        {
//          send the intent to your AlarmManager class and process it there.

            YourAlarmManager.processAlarm(intent, this);            
        } catch (Exception e){
            e.printStackTrace();
        }
    }
}

希望这有帮助! :)