自定义参数/变量传递给Android模拟器

时间:2011-08-01 17:25:55

标签: java android environment-variables command-line-arguments

我想将参数传递给通过Eclipse启动的android模拟器。这个参数是一个自定义的参数,我将用它来确定服务器的连接地址是“localhost”还是“myserverdomain.com”。这是因为每当我在生产环境或本地测试环境中运行程序时,我都不希望有两个二进制文件或两个版本的同一程序。

在普通Java中,我可以使用命令行参数,并在main()中检索它们,或者使用自定义环境变量并使用System.getProperty()检索它们。

我在Android中找不到任何类似的功能。你知道吗?

2 个答案:

答案 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还有一些选项。此外,为什么您正在开发自己的应用,可以让用户决定使用AlertDialogListPreferencedebugging作为触发器。