关于android的警报的pendingintent

时间:2011-02-13 14:20:12

标签: android alarm android-pendingintent

当设置服务在特定时间关闭时,我使用AlarmManager系统服务。 一切都没有问题,服务被召唤并且行动发生。

当达到闹钟时间时,服务启动,此时我获得系统时间(System.currentTimeMillis())。我猜这不是服务开始的实际时间。有没有办法获得为此PendingIntent设置的时间?

  

设定闹钟为上午9点   DoStuffService从上午9点开始   DoStuffService知道它应该在上午9点开始,并将此值用于将来的功能。

2 个答案:

答案 0 :(得分:4)

当您为警报创建意图时,您可以将额外数据(包括警报时间)添加到其中,如下所示:

Intent intent = new Intent("action name");

//put extra data into the intent:
intent.putExtra("alarm_time_hours", hours);
intent.putExtra("alarm_time_minutes", minutes);

PendingIntent sender = PendingIntent.getBroadcast(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, cal.getTimeInMillis(), sender);

然后,在您的接收器或服务中,您需要从接收到的意图中获取此额外数据。使用这样的东西:

Bundle bundle = intent.getExtras();
if(bundle.containsKey("alarm_time_hours")) {
    int hours = bundle.getInt("alarm_time_hours");
}
if(bundle.containsKey("alarm_time_minutes")) {
    int minutes = bundle.getInt("alarm_time_minutes");
}

答案 1 :(得分:0)

  

有没有办法获得为此PendingIntent设置的时间?

不,抱歉。

但是,您自己确定它并不是非常困难。按照您的示例,如果您的服务报告它现在是09:00:02.36,您应该能够向下舍入以确定这是9am警报。