少女祈祷中...
ATIN

AI 专属隐形输入法

Android 只允许 InputMethodService 向输入框写文本。AI 要合法注入字符串,就得拿输入法身份,不需要键盘 UI。

设计

  • UI:点击输入框只弹一条 1px 横线,不弹软键盘,截屏零遮挡
  • 协议:HTTP + JSON,固定端口 8767
  • 入口:adb forward 访问 HTTP;adb shell am broadcast 走广播
  • 服务名编码协议:com.aixtin.invisime/.Ime_tcp8767_http_json,dumpsys 可见即用

协议

HTTP 主入口:


adb forward tcp:8767 localabstract:httpd

curl -X POST <http://127.0.0.1:8767> -d '{"cmd":"type","text":"你好"}'

 

广播快速入口:

 

adb shell am broadcast -a AIX_INPUT_TEXT --es text "你好"

 

指令集:type / backspace / enter / get_text(回读输入框内容)/ select(选区)/ composition(模拟真人打字节奏)。核心动作只有一个:commitText(CharSequence)。

实现

四个组件:

ImeState:状态机,当前输入法开关与注入目标
InvisImeService:InputMethodService,onCreateInputView 返回 1px View
InvisHttpServer:NanoHTTPD 监听 8767,解析 JSON 指令
InjectReceiver:广播接收,解析 intent extra

文本写入统一走 commitText;读回走 InputConnection 的 getTextBeforeCursor / getTextAfterCursor。

历史 bug:初版 executeType 重复 commitText,已修;fixMojibake() 做 ISO-8859-1→UTF-8 回转。

安全边界

只写不点:不点发送按钮、enter 默认换行、不改写已有文本、不静默切换系统输入法。

实测

真机 OPPO ColorOS Android 14(一加 Ace 3 Pro,WireGuard 10.10.10.3:5555)。

坑:ColorOS 输入法导航栏默认不可见,NavigationBarFrame 被设 alpha=0.0;定位后在 onWindowShown postDelayed 300ms 扫 decorView setAlpha(1.0) 恢复。

HTTP 与广播注入中文、英文、删除、回读均验证通过。

 

评论