【问题标题】:Start Android APK with args from adb使用来自 adb 的 args 启动 Android APK
【发布时间】:2020-04-14 03:06:27
【问题描述】:

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

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

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

    //get args1, get  args2...
}

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

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

【问题讨论】:

    标签: android adb emulation genymotion


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

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

      按照您的描述,这是不可能的。

      然后使用 adb,如何使用这些 args 运行我的应用程序?

      按照您的描述,这是不可能的。

      可以做的——以及adb 示例向您展示的——是提供Intent 附加功能:

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

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

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

      在您的活动的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");
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-07-15
        • 2021-10-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多