我遇到了连接到警报的文本字符串的问题。看起来,当警报被触发时,连接到警报的字符串是空的。很明显,我犯了一个错误 - 但不知道在哪里。警报管理器中的字符串丢失
我的设置闹钟的代码是;
static void set_alarm(long alarm_time_in_millis,Context cont,AlarmManager alarm_manager,String str)
{
Intent intent = new Intent(cont, to_call_when_alarm_goes_off.class);
intent.putExtra("string_passed_in_bundle", str);
Log.i("xx","set_alarm ["+str+"]"); // The string I see in the Log is correct
PendingIntent pIntent = PendingIntent.getBroadcast(cont,0, intent, 0);
alarm_manager.cancel(pIntent);
alarm_manager.set(AlarmManager.RTC_WAKEUP,alarm_time_in_millis, pIntent);
}
用于接收报警的代码如下:
public class to_call_when_alarm_goes_off extends BroadcastReceiver
{
Bundle bundle_from_whoever_called_this_activity;
@Override
public void onReceive(Context arg0, Intent arg1)
{
String str;
bundle_from_whoever_called_this_activity = arg1.getExtras();
str = bundle_from_whoever_called_this_activity.getString("string_passed_in_bundle");
Log.i("xx","to_call_when_alarm_goes_off: TIME TO WAKE UP!!! ["+str+"]");
try
{
Intent i = new Intent(arg0, dingaling.class);
i.putExtra("string_passed_in_bundle", str);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
arg0.startActivity(i);
}
catch (Exception e)
{
}
}
}
当我设置一个报警,然后等待它被触发,该日志文件会显示这样的事情
set_alarm [Go to meeting]
to_call_when_alarm_goes_off: TIME TO WAKE UP!!! [null]
编辑:难道会有一些“超级”。功能我忘记打电话了?
编辑:我经常会对传递给各种功能的上下文感到困惑, getBaseContext(),getApplicationContext(),“this”等...如果我在某个地方涉及到错误类型的上下文,是否会导致此问题?
第一个日志声明(XX)具有正确的字符串广播接收器,我把它?另外,你可以尝试将你的额外关键字重命名为比“字符串”更独特的标识吗?我怀疑这是问题,但你永远不知道.. – Scen 2012-07-18 15:39:05
@Scen:是的第一个日志有正确的字符串 - 好吧我会尝试一些比“字符串”以外的东西。 – Mick 2012-07-18 15:46:17
@Scen:从使用“string”改为“alarm_string”,但没有区别。 – Mick 2012-07-18 15:56:16