0

如何从我的应用程序中判断它是否是从我的 BroadcastReceiver 启动/恢复的?

我拦截拨出电话 ( android.intent.action.NEW_OUTGOING_CALL)。如果getString(Intent.EXTRA_PHONE_NUMBER)是一组数字中的一个,我会中止该调用 (setResultData(null)) 而不是startActivity我的应用程序,putExtra指定特定的数字。如果(且仅当)来自广播接收器,我希望能够发出一个基本上是“使用这个应用程序和这个号码/返回呼叫”的警报。但是,有时当我从其他地方返回应用程序时,即使我不是来自 BroadcastReceiver,这个数字似乎仍然在意图的附加部分中。我尝试检查该FLAG_ACTIVITY_NEW_TASK标志,但它有时会在不是来自广播接收器时出现。

4

1 回答 1

0

正如您所说:您可以将任何参数传递给您的活动,表明它是从您的BroadcastReceiver. 但是,当恢复您的活动时,可能会再次执行某些代码 - 可能会导致不需要的结果。当我遇到类似问题时,我在意图中存储/覆盖了一些信息,例如

myActivity.getIntent().putExtra("phoneNumber", "nil");

对我有用的是,我在完成处理后覆盖了意图中的额外内容ActionMode(假设使用"nil")。所以后来我能够评估这些信息onResume(),例如:

@Override
public void onResume() {
    super.onResume();

    String phoneNumber = getIntent().getExtras().getString("phoneNumber")

    if ("nil".equals(PhoneNumber)) {
      ...
    }
}

刚刚做了一个小测试,效果很好。

希望这会有所帮助......干杯!

于 2013-04-25T17:13:38.133 回答