【发布时间】:2012-07-26 13:29:07
【问题描述】:
我对附加到警报的文本字符串有疑问。似乎触发警报时,附加到警报的字符串为空。显然我犯了一个错误 - 但不知道在哪里。
我设置闹钟的代码是;
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" etc...如果我在某处涉及到错误的上下文类型,会导致这个问题吗?
【问题讨论】:
-
第一个日志语句 (xx) 有正确的字符串,我接受了吗?另外,您可以尝试将您的附加键重命名为比“字符串”更唯一可识别的名称吗?我怀疑这是问题所在,但你永远不知道..
-
@Scen:是的,第一个日志有正确的字符串 - 好的,我会尝试“字符串”以外的其他内容。
-
@Scen:从使用“string”改为“alarm_string”,但没有区别。
-
这真的很奇怪,它应该可以工作。如果您自己解决了这个问题,请不要忘记更新问题!我真的很想知道这里发生了什么,呵呵。
标签: android