检测活动开始结果

时间:2012-12-24 08:52:28

标签: android android-activity

我有一个活动,假设“活动A”,我以两种方式开始a)StartActivity()
b)StartActivityForResult()
现在我的方法很少对于活动开始的方式有不同的行为。现在我想检测到“Activity A”是为了结果而启动的。 那么我的问题是我们如何检测到活动是为了结果而开始的? 我不想通过意图发送数据。还有其他更通用的方法吗?

谢谢。

3 个答案:

答案 0 :(得分:12)

来自this answer

  

当您的活动仅由startActivity()启动时a   目标活动中的getCallingActivity()方法将返回null。什么时候   它被startActivityForResult()调用,它将返回名称   呼叫活动。

     

示例:

if (getCallingActivity() == null) {
    //This Activity was called by startActivity 
} else {
   //This Activity was called by startActivityForResult
}

答案 1 :(得分:1)

您无需在Intent中传递任何虚假数据。 Activity有检查启动Activity的方法,称为getCallingPackage()

来自文档:

  

返回调用此活动的包的名称。这是谁   setResult()中的数据将被发送到。您可以使用此信息   验证收件人是否被允许接收数据。

答案 2 :(得分:-1)

使用

调用时发送一些布尔额外
intent.putExtra("mBool", true);
startActivityForResult(intent);

根据该值,相应的操作已完成。

if(getIntent().hasExtra("mBool")){

//ForResult
}else{

//default
}