如何将KeyMapper快捷方式Intent转换为Shell命令触发?
问题:将KeyMapper快捷方式Intent转换为Shell命令失败
想要在Shell中运行KeyMapper的如下Intent:
#Intent; action=io.github.sds100.keymapper.ACTION_TRIGGER_KEYMAP_BY_UID; component=io.github.sds100.keymapper/.api.LaunchKeyMapShortcutActivity; S.io.github.sds100.keymapper.EXTRA_KEYMAP_UID=2bba7f4f-0a7e-44d6-828d-ec87c0c868cd; end
第一次尝试的Root权限Shell命令:
am start -a io.github.sds100.keymapper.ACTION_TRIGGER_KEYMAP_BY_UID;component=io.github.sds100.keymapper/.api.LaunchKeyMapShortcutActivity;S.io.github.sds100.keymapper.EXTRA_KEYMAP_UID=2bba7f4f-0a7e-44d6-828d-ec87c0c868cd
返回报错:
Error: Activity not started, unable to resolve Intent { act=io.github.sds100.keymapper.ACTION_TRIGGER_KEYMAP_BY_UID flg=0x10000000 } /system/bin/sh: <stdin>[1]: S.io.github.sds100.keymapper.EXTRA_KEYMAP_UID=2bba7f4f-0a7e-44d6-828d-ec87c0c868cd: not found
编辑补充的尝试命令:
am start --user 0 -a io.github.sds100.keymapper.ACTION_TRIGGER_KEYMAP_BY_UID --es S.io.github.sds100.keymapper.EXTRA_KEYMAP_UID=2bba7f4f-0a7e-44d6-828d-ec87c0c868cd --el io.github.sds100.keymapper/.api.LaunchKeyMapShortcutActivity
返回信息显示已启动Intent,但实际并未触发对应快捷方式,求助正确实现方法。
正确的Shell命令实现
错误原因分析
- 第一次命令用分号分隔参数,Shell会把分号后的内容当成独立命令执行,导致Intent参数解析错误。
- 第二次命令存在两个关键错误:
- Extra参数格式错误:
--es需要分开传递键和值,不能用等号连写 - Component参数使用错误:应该用
-n指定组件,而非--el(--el用于传递长整数类型参数)
- Extra参数格式错误:
正确命令
am start --user 0 -a io.github.sds100.keymapper.ACTION_TRIGGER_KEYMAP_BY_UID -n io.github.sds100.keymapper/.api.LaunchKeyMapShortcutActivity --es io.github.sds100.keymapper.EXTRA_KEYMAP_UID "2bba7f4f-0a7e-44d6-828d-ec87c0c868cd"
参数说明
--user 0:指定当前主用户(大部分设备主用户ID为0)-a:指定Intent的Action-n:指定Intent的Component(包名/目标Activity路径)--es:传递字符串类型的Extra参数,格式为--es 键 值
内容的提问来源于stack exchange,提问作者Yan Vitor
相关产品推荐
相关产品推荐

