adb 传送 intent boolean extra value

在尝试使用adb命令行向0xBench发送intent extra时遇到问题,原本使用`-ez`传递boolean值,但0xBench解析时出现问题,将`-ez`解析成了`-e z`。修改命令行参数为`-e`传递`true`字符串后,intent中的值变为String类型而非Boolean。解决方法是直接在0xBench源码中使用`Boolean.valueOf()`进行转换,或者确保命令行使用正确的`--ez`格式。


最近想用命令行给 0xBench 发送 intent extra, 命令行如下:

    adb shell am start -n org.zeroxlab.zeroxbenchmark/.Benchmark -ez autorun true

adb 命令 help 提示的就是用

   --ez <EXTRA_KEY> <EXTRA_BOOLEAN_VALUE>


0xBench 中 org.zeroxlab.zeroxbenchmark.Benchmark.java 中接收 intent 的代码如下:

        Intent intent = getIntent();
        Bundle bundle = intent.getExtras();
        if (bundle != null) {
            mAutoRun = bundle.getBoolean("autorun");
            mCheckMath = bundle.getBoolean("math");
            ...
        }

我加入了一些 log, 结果让我非常吃惊

bundle.get("autorun") 的结果是: z (注意它把 -ez 认为是 -e z 了, 与adb help说明不符合)

autorun是:null


把命令行改为

adb shell am start -n org.zeroxlab.zeroxbenchmark/.Benchmark -e autorun true 

这次autorun是 "true", 注意是 String value, 而

 mAutoRun = bundle.getBoolean("autorun");
得到的结果还是 false


我想以后只有改0xBench源代码, 用 Boolean.valueOf() 把它矫正过来了


最后发现还是自己粗心的毛病

应该用 --ez, 而不是 -ez



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值