Android 检查意图是否正在调用或默认情况下活动是否已启动

Android 检查意图是否正在调用或默认情况下活动是否已启动,android,android-intent,methods,Android,Android Intent,Methods,如何检查活动是默认启动的,还是从其他活动中的意图调用了活动的方法? 我认为目前我的代码非常糟糕,因为我是通过尝试/捕获来处理它的 它工作正常,但我想要更好的代码 public class MyScan extends Activity { public final static String EXTRA_MESSAGE = ".MESSAGE"; @Override protected void onCreate(Bundle savedInstanceState) { super.o

如何检查活动是默认启动的,还是从其他活动中的意图调用了活动的方法? 我认为目前我的代码非常糟糕,因为我是通过尝试/捕获来处理它的 它工作正常,但我想要更好的代码

public class MyScan extends Activity {
public final static String EXTRA_MESSAGE = ".MESSAGE";

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    checkIntent();
}

public void checkIntent() {
    try {
        Intent i = getIntent();
        String method_name = i.getStringExtra("method_name");// is firing an error if there is no intent call
        if (method_name.equals("scanBarcode")) {
            scanBarcode2();// That starts my method
        }
    } catch (Exception e) {
        setContentView(R.layout.activity_my_scan); // that shows just my Content
    }

}
....
谢谢你的提示Alex Terreaux

我这样修改了代码

public void checkIntent() {
    Intent i = getIntent();
    if (i != null) {
        String method_name = i.getStringExtra("method_name");
        if (method_name != null && method_name.equals("scanBarcode")) {
            scanBarcode2();
        } else {
            setContentView(R.layout.activity_my_scan);
        }
    }
}

这是有效的。

尝试检查
getIntent()
的结果是否为空

你可以用额外的。在strings.xml中添加新字符串:

<string name="starting_from_intent">STARTING_FROM_INTENT</string>
然后,在checkIntent()中,执行以下操作:


希望这不是很难理解,也希望这有帮助。

当您的活动仅由startActivity()启动时,目标活动中的getCallingActivity()方法将返回null


当startActivityForResult()调用它时,它将返回调用活动的名称。

你的意思是如果(i!=null)已关闭,但不是雪茄,因为如果(i!=null)为真,但你将我放在了正确的方向上,请参见我最初的帖子Yeah,这就是我的意思。很高兴我帮了忙。对不起,我不小心贴出了两个答案。我希望这个更详细。我不是有意要发布另一个答案。。。
intent.putExtra(getString(R.string.starting_from_intent), 1);
boolean startedFromIntent;

Intent i = getIntent();
if (i.getIntExtra(getString(R.string.starting_from_intent), 0) == null
|| i.getIntExtra(getString(R.string.starting_from_intent), 0) == 0) 
    startedFromIntent = false;

else 
    startedFromIntent = true;