使用来自 adb 的参数启动 Android APK

Start Android APK with args from adb

我正在寻找使用 args 启动我的 APK 的方法。

首先,如何在 OnCreate 方法中获取参数?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //get args1, get  args2...
}

然后使用 adb,我如何 运行 我的应用程序使用这些参数?我只看到这样的例子:

adb shell am start -S -D com.example.apk/android.app.MainActivity --es args '"-name MYNAME -email test@gmail.com"'

First, How can I get args in OnCreate method?

根据您描述的条件,这是不可能的。

Then with adb, How can I run my application with those args?

根据您描述的条件,这是不可能的。

可以做的——以及adb示例向您展示的——是供应Intent extras:

adb shell am start -S -D com.example.apk/android.app.MainActivity --es args '"-name MYNAME -email test@gmail.com"'

这不是使用 Intent 额外功能的特别好方法,但让我们从它开始吧。

在这里,您要传递一个名为 args 的额外字符串,其值为 "-name MYNAME -email test@gmail.com".

在 activity 的 onCreate() 中,您可以调用 getIntent().getStringExtra("args") 来检索该字符串:

String args = getIntent().getStringExtra("args");

现在,args 变量将保持 -name MYNAME -email test@gmail.com

更简单、更清晰的 adb shell am start 命令是:

adb shell am start -S -D com.example.apk/android.app.MainActivity --es name MYNAME --es email test@gmail.com

现在您要传递两个额外的字符串,nameemail。然后您可以单独检索每个值:

String name = getIntent().getStringExtra("name");
String email = getIntent().getStringExtra("email");

这个答案对我不起作用,因为 -S(force stop) -D(debugging) 不足以发送额外的值,您应该添加 -n(Component) 以使用 -e[=11 发送额外的值=]

这里是发送多个键值的示例

adb shell am start -n com.example.jk.checkwifi/.MainActivity -e "imei" $myimei -e "ip" $IP