当设置服务在特定时间关闭时,我使用AlarmManager系统服务。 一切都没有问题,服务被召唤并且行动发生。
当达到闹钟时间时,服务启动,此时我获得系统时间(System.currentTimeMillis())。我猜这不是服务开始的实际时间。有没有办法获得为此PendingIntent设置的时间?
即
设定闹钟为上午9点 DoStuffService从上午9点开始 DoStuffService知道它应该在上午9点开始,并将此值用于将来的功能。
答案 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警报。