我正在通过使用AlarmManager和BroadcastReceiver类(名为AReceiver.java)为我的程序添加一些基本的闹钟功能。我的问题是,我添加到创建PendingIntent的意图附加的bundle中的数据似乎丢失了。在AReceiver类中我只能访问一个android.intent.extra.ALARM_COUNT=1的Bundle数据。
这里是在主活动类中创建Intent、PendingIntent和AlarmManager的基本代码: [主活动中的代码-Notepadv3]
Intent intent = new Intent(Notepadv3.this, AReceiver.class);
intent.putExtra("teststring","hello, passed string in Extra");
PendingIntent alarmIntent = PendingIntent.getBroadcast(this, pendingPeriodIntentId, intent, 0);
AlarmManager am = (AlarmManager) getSystemService(ALARM_SERVICE);
am.set(AlarmManager.RTC_WAKEUP, timeOfNextPeriod.getTimeInMillis(), alarmIntent);
[在广播接收器中的代码 - AReceiver]
public void onReceive(Context con, Intent arg1) {
Bundle extrasBundle = arg1.getExtras();
Log.d("broadcast","contains teststring = " + extrasBundle.containsKey("teststring"));
Log.d("broadcast","is empty? = " + extrasBundle.isEmpty());
Log.d("broadcast","to string = " + extrasBundle.toString());
}
调试信息显示contains teststring为FALSE,is empty为FALSE,当输出整个bundle时,我得到了android.intent.extra.ALARM_COUNT=1的值。
非常感谢任何帮助。
干杯, Tom