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;