如何从我的应用程序中判断它是否已从我的BroadcastReceiver启动/恢复?
我拦截拨出电话(android.intent.action.NEW_OUTGOING_CALL
)。如果getString(Intent.EXTRA_PHONE_NUMBER)
是一组数字之一,我会中止该调用(setResultData(null)),而不是startActivity
我的应用,putExtra
特定数字。如果(并且仅当)来自BroadcastReceiver,我希望能够提出一个基本上“使用此应用程序使用此号码/返回呼叫”的警报。但是,有时当我从其他地方返回应用程序时,即使我没有来自BroadcastReceiver,这个数字似乎仍然是意图的额外内容。我尝试检查FLAG_ACTIVITY_NEW_TASK
标志,但有时候不会出现在BroadcastReceiver上。
答案 0 :(得分: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)) {
...
}
}
做了一个小测试,效果很好。
希望这有帮助......干杯!