自定义键盘ADV按键修改咨询:实现按下触发指定文本输入
搞定自定义ADV按键模拟SEND发送指定内容
嘿,我来帮你解决这个自定义键盘的问题!你当前的代码只是把"adventure"输入到输入框里,但并没有触发发送动作——这就是它没法像SEND按键那样直接发送内容的原因。下面是两种实用的修改方案,你可以根据需求选择:
方案一:输入文本后自动触发发送(还原SEND按键逻辑)
这种方案会先把指定文本输入到输入框,再模拟用户按下SEND按键的动作,和日常使用输入法的流程完全一致:
case 900: // 第一步:把预设文本输入到输入框 CharSequence text = "adventure"; ic.commitText(text, 1); // 第二步:触发发送动作(适配大多数应用的SEND逻辑) // 方式A:模拟回车键(很多聊天APP的SEND其实是回车键) ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_ENTER)); ic.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_ENTER)); // 如果你发现回车键不生效,可以换成方式B:触发系统IME的SEND动作 // ic.performEditorAction(EditorInfo.IME_ACTION_SEND); break;
方案二:直接发送文本(跳过输入框显示)
如果不需要把文本显示在输入框里,想直接发送预设内容,你可以简化逻辑,但这种方式需要目标应用支持直接接收发送指令。不过更通用的做法还是用方案一,因为它适配绝大多数应用。
额外提醒
- 你的XML配置
<Key android:codes="900" android:keyLabel="ADV" />完全没问题,不需要修改,自定义键码900可以正常使用。 - 确保你的输入法在AndroidManifest.xml里声明了必要的权限:
<uses-permission android:name="android.permission.INPUT_METHOD" />
内容的提问来源于stack exchange,提问作者user9226293




