开始从广播接收器的活动我可以用这种方式调用从广播接收器的活动:与结果
public class AlarmReceiver extends BroadcastReceiver
{
@Override
public void onReceive(Context context, Intent intent)
{
try {
Intent i = new Intent(context, MyActivity.class);
i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(i);
Log.v(TAG, "alarm triggered");
} catch (Exception e) {
Log.v(TAG, e.toString());
}
}
}
这带来的应用前端和活动要求onResume()
。我的问题是我无法确定BroadcastReceiver是否将我带到onResume()
,或者只是用户本身手动。有什么方法可以确保BroadcastReceiver称为活动?
我还尝试通过执行i.putExtra("foo", "bar")
来使用Extras以BroadcastReceiver填充意向。我无法通过在Activity上调用MyActivity.getIntent().getExtras().get("foo")
来读出它。
希望有人能帮助我解决这个问题,非常感谢!
将“STARTED_BY_RECEIVER”放入一个静态变量并在两个地方使用它意味着什么?由于看到没有变量STARTED_BY_RECEIVER,我可以像正常的方式检查像'STARTED_BY_RECEIVER == true;'这不适合我,我做了你所说的一切,但“静态变量”的东西。 'if(getIntent()。getExtras()!= null && getIntent()。getExtras()。getBoolean(“STARTED_BY_RECEIVER”))'虽然我没有'i.putExtra(“STARTED_BY_RECEIVER”,true)'in我的BroacastReceiver。 – arminb 2011-12-22 01:07:54
好吧忘了静态的东西..你把if()放在onCreate的右边?如果它是从接收方调用的,它将是真的,所以if语句将运行,如果用户调用,那么其他语句将运行,因为在那里不会有额外的(“STARTED_BY_RECEIVER”)。现在,您需要尽可能彻底正如我在我的回答中告诉我什么没有工作,只是说“这不适合我” – 2011-12-22 14:24:31
在我的BroadcastReceiver的'onReceive()'方法中,我设置了'i.putExtra (“STARTED_BY_RECEIVER”,true);'在我通过context.startActivity(i)'开始活动之前。在我的Activity中,我将'if(getIntent()。getExtras()!= null && getIntent()。getExtras()。getBoolean(“STARTED_BY_RECEIVER”))'放入我的'onCreate()'方法中,但if子句永不放弃成真。 这就是我所做的,抱歉不适合,并感谢您的参与。 – arminb 2011-12-22 14:52:32