如何通过ADB shell广播带有额外信息的意图?

10

我正在尝试通过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广播意图并使用其中一些属性/标志(例如比例、状态、插入等)?

1个回答

14

startstartservicebroadcast 等所有 am 子命令中,<INTENT> 参数格式相同。

它可以作为一个由单独参数组合成的形式进行传递,例如 -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'"

12
谢谢回答。它完美地起作用了。同时,我找到了另一种可能的解决方案:am broadcast -a android.intent.action.BATTERY_CHANGED --ez present false --ei state 2 --ei level 50 - Valyo
1
这里的答案对我没用,但是Valyo在这里的评论确实有用。此外,您必须在adb shell中进行操作,因此如果您在命令行上,请在此命令前加上“adb shell”。 - Stealth Rabbi
@Valyo的评论确实有所帮助,但我不得不将extras更改为am broadcast -a android.intent.action.BATTERY_CHANGED --ez present false --ei state 2 --ei level 50。 - Igor Čordaš

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接