Instrumentation instr = new Instrumentation();String str="a";// basically the same like calling instr.sendStringSync(str);char[] chars = str.tochararray();KeyCharacterMap keyCharacterMap = KeyCharacterMap.load(KeyCharacterMap.VIRTUAL_KEYBOARD);KeyEvent[] keyEvents = keyCharacterMap.getEvents(chars);if (keyEvents != null) { for (KeyEvent kev : keyEvents) { instr.sendKeySync(kev); }}
这完全适用于英文字符(字符显示在EditText框中).但是,如果我试图注射,例如韩文字符,这失败了.函数getEvents返回null,即使我配置了韩语和键盘也是如此.
我知道还有另一种直接注入字符串的方法:
KeyEvent event = new KeyEvent(SystemClock.uptimeMillis(),str,0);instr.sendKeySync(event);
这也不起作用 – 在EditText框中没有显示任何字符,并且在我的测试活动中也没有调用onKeyMultiple().
这很奇怪,因为具有相同事件的dispatchKeyEvent()在我的测试活动中起作用:
KeyEvent event = new KeyEvent(SystemClock.uptimeMillis(),0);dispatchKeyEvent(event);
我的远程控制应用程序需要注入事件,无论哪个活动.这可以使用Instrumentation(使用androID.permission.INJECT_EVENTS和带有平台密钥的签名).
如何使用仪器注入非英文字符?
还有另一种方法来实现这一目标吗?例如.使用dispatchKeyEvent(也必须适用于其他活动/应用程序).
我在手机上编辑kcm时遇到了一些问题,所以我所做的就是将它复制到计算机上,在那里编辑然后将其复制回设备.
我希望这有帮助!
在此link中,出现以下内容.无论您在设置上选择什么,它都会使虚拟键盘具有US keyCharacterMap和布局.我一直无法找到解决这个问题的方法.
Language NoteAndroID does not currently support multilingual keyboards. Moreover,the built-in generic key character map assumes a US English keyboard layout.OEMs are encouraged to provIDe custom key character maps for their keyboards if they are designed for other languages.Future versions of AndroID may provIDe better support for multilingual keyboards or user-selectable keyboard layouts.总结
以上是内存溢出为你收集整理的在Android中注入非英文字符全部内容,希望文章能够帮你解决在Android中注入非英文字符所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)