Android:Alarm的BoradcastReceiver类从Intent对象获取错误的Integer Extra

时间:2012-02-23 08:31:20

标签: android android-intent android-alarms

我正在开发一个应用程序,其中有3个按钮。其中,button_1为 5分钟,button_2为 10分钟,button_3为 15分钟

当用户点击其中一个按钮时,我设置了那个时间的闹钟。我正在使用OneShotAlarm.class作为BroadcastReceiver进行报警。我将alarm_time(5,10或15分钟)置于意图点火,如,

Intent alarm_intent = new Intent(context, OneShotAlarm.class);
alarm_intent.putExtra(SNOOZE_TIME, 5);

我正试图在OneShotAlarm.class中检索这个,但不知何故,它会在设置闹钟的时候继续将5放在那里。

虽然警报会在正确的时间正确地触发所有选项,但我没有在OnShotAlarm.class中从intent的Integer extra中正确获取值。

我对所有警报都使用相同的警报请求代码,但每次都会设置新对象来设置警报。如果有问题,我会这样做。

希望,我已经清楚了解了这个问题。请帮助我指出我错过了什么?

编辑:

我忘了指定这三个按钮都在一个小部件中,我使用一个广播接收器来捕捉他们的点击。当你试图努力帮助我时,请给您带来不便!

1 个答案:

答案 0 :(得分:0)

我在widget中使用了这三个按钮。我忘了在我的问题中指出,我很抱歉!

我的代码没有问题,这是正确的。但是我曾经称之为BroadcastReceiver来捕获小部件按钮的点击,这有点问题。

我在WidgetProvider类的onUpdate()中使用了这些行,

receiver = new Intent(context, ClickCounterWidgetReceiver.class);
receiver.setAction("SET_SNOOZE");
receiver.putExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS, appWidgetIds);                
pendingIntent = PendingIntent.getBroadcast(context, 0, receiver, 0);

将行更改为低于1解决了问题:

pendingIntent = PendingIntent.getBroadcast(context, 0, receiver, PendingIntent.FLAG_UPDATE_CURRENT);