我想将参数传递给通过Eclipse启动的android模拟器。这个参数是一个自定义的参数,我将用它来确定服务器的连接地址是“localhost”还是“myserverdomain.com”。这是因为每当我在生产环境或本地测试环境中运行程序时,我都不希望有两个二进制文件或两个版本的同一程序。
在普通Java中,我可以使用命令行参数,并在main()
中检索它们,或者使用自定义环境变量并使用System.getProperty()
检索它们。
我在Android中找不到任何类似的功能。你知道吗?
答案 0 :(得分:6)
这是可能的,虽然我没有尝试过Eclipse。
在命令行中,您可以使用adb启动a shell并运行带参数的应用程序。
例如,
adb shell am start -a android.intent.action.MAIN -n org.caoilte.MyActivity -e SOME_KEY some_value -e SOME_OTHER_KEY some_other_value
将使用我可以从包中提取的额外内容开始我的活动,
public class MyActivity extends Activity {
protected void onStart() {
super.onStart();
String someKey = null;
String someOtherKey = null;
Bundle extras = getIntent().getExtras();
if (extras != null) {
jsEnv = extras.getString("SOME_KEY");
serverEnv = extras.getString("SOME_OTHER_KEY");
}
}
答案 1 :(得分:1)
启动模拟器以调试应用程序时,就像在设备上安装一样。模拟器不仅仅是运行应用程序的机制,它几乎是一部手机。创建一个命令行选项以将数据传递到您的应用程序会有点复杂,因为没有main(String[])
,并且需要多个选项来确定何时以及如何传递命令行选项。
告诉应用程序运行哪个服务器可以通过几种不同的方式完成。首先,您可以将其设置为String resource。其次,您可以使用Build.PRODUCT和其他Build值检测您正在运行的设备。使用NetworkInterface还有一些选项。此外,为什么您正在开发自己的应用,可以让用户决定使用AlertDialog或ListPreference并debugging作为触发器。