【问题标题】:How to broadcast intent with extras through ADB shell?如何通过 ADB shell 广播带有额外内容的意图?
【发布时间】:2013-07-18 07:53:11
【问题描述】:

我正在尝试通过 ADB shell 发送 BATTERY_CHANGED 意图。到目前为止,我只设法在没有信息的情况下发送意图:

am broadcast -a android.intent.action.BATTERY_CHANGED

我创建了一个应用程序来监听这个意图,这是系统每隔几秒发送的内容:

#Intent;action=android.intent.action.BATTERY_CHANGED;launchFlags=0x60000010;i.icon-small=17302838;B.present=true;i.scale=100;i.level=100;S.technology=Li-ion;i.status=5;i.voltage=4155;i.invalid_charger=0;i.plugged=2;i.health=2;i.temperature=280;end

当我广播意图时,我的应用会显示:

#Intent;action=android.intent.action.BATTERY_CHANGED;launchFlags=0x10;end

我的问题是如何通过 adb shell 使用其中一些属性/标志(如规模、状态、已插入等)广播意图?

【问题讨论】:

    标签: android shell android-intent adb broadcast


    【解决方案1】:

    <INTENT> 参数格式对于所有am 子命令(如startstartservicebroadcast)都是相同的。

    它可以作为 -a <ACTION>-c <CATEGORY>-n <COMPONENT> 和不同类型的附加参数的不同 -e <EXTRA> 等单独参数的组合传递,也可以作为单个 URI 格式化字符串传递:

    am broadcast "intent:#Intent;action=android.intent.action.BATTERY_CHANGED;i.status=5;i.voltage=4155;i.level=100;end"
    

    同时确保在交互式adb shell 会话之外运行时正确转义命令:

    adb shell "am broadcast 'intent:#Intent;action=android.intent.action.BATTERY_CHANGED;i.status=5;i.voltage=4155;i.level=100;end'"
    

    【讨论】:

    • 感谢您的回答。它完美地工作。与此同时,我找到了另一种可能的解决方案:am broadcast -a android.intent.action.BATTERY_CHANGED --ez present false --ei state 2 --ei level 50
    • 她的答案对我不起作用,但 Valyo 的评论确实有效。此外,您必须为此使用 adb shell,所以如果您使用命令行,只需在此处的命令前添加 'adb shell'。
    • @Valyo 评论确实有帮助,但我不得不将附加内容更改为广播 -a android.intent.action.BATTERY_CHANGED --ez present false --ei state 2 --ei level 50
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 2015-11-17
    • 1970-01-01
    相关资源
    最近更新 更多