我有一个活动假设“活动A”,我通过两种方式开始
a)StartActivity()
b)StartActivityForResult()
现在我有几个方法对于活动开始的方式具有不同的行为。现在我想检测“活动 A”是否已启动以获得结果。所以我的问题是我们如何检测到活动是为结果而开始的?我不想通过意图发送数据。还有其他更通用的方法吗?
谢谢你。
我有一个活动假设“活动A”,我通过两种方式开始
a)StartActivity()
b)StartActivityForResult()
现在我有几个方法对于活动开始的方式具有不同的行为。现在我想检测“活动 A”是否已启动以获得结果。所以我的问题是我们如何检测到活动是为结果而开始的?我不想通过意图发送数据。还有其他更通用的方法吗?
谢谢你。
从这个答案
当您的活动仅通过 startActivity() 启动时,目标活动中的 getCallingActivity() 方法将返回 null。当它被 startActivityForResult() 调用时,它将返回调用活动的名称。
例子:
if (getCallingActivity() == null) { //This Activity was called by startActivity } else { //This Activity was called by startActivityForResult }
您不需要在Intent
. Activity 有方法检查启动Activity
它被调用getCallingPackage()
从文档中:
返回调用此活动的包的名称。这就是将 setResult() 中的数据发送给谁。您可以使用此信息来验证是否允许接收者接收数据。
使用调用时发送一些布尔附加值
intent.putExtra("mBool", true);
startActivityForResult(intent);
根据该值,执行相应的操作。
if(getIntent().hasExtra("mBool")){
//ForResult
}else{
//default
}