如何使用UiObject#setText在Android的uiautomator中设置非拉丁字母(例如变音符号)



根据 Android 4.1.1_r1 的源代码:

com.android.uiautomator.core.UiObjectsetText(String text)方法将首先clearTextField(),然后return getInteractionController().sendText(text);

而在com.android.uiautomator.core.InteractionController中,sendText方法实际上转换text.toCharArray(),然后通过调用nativeGetEvents()返回KeyEvent[]

当然,android.view.KeyEvent 只包含电话键,不包含变音符号(ä,ö,ü,ß) 或其他字符集。 但是确实有一个名为 public static final int KEYCODE_LANGUAGE_SWITCH = 204; 的 KeyEvent

虽然问题是 InteractionController 类似乎在 Android 4.2 之后被删除,因此我无法通过直接发送任何 KeyEvent 来破解它。

谁能告诉我是否有任何解决方案或解决方法可以将非拉丁字母发送到模拟器? 感谢您的帮助。

我编写了一个 IME 来将仅使用 ASCII 字符的编码文本转换为 Unicode 文本。安装 IME 后,可以在可编辑字段中设置非拉丁字母。

有关更多详细信息,请参阅我的另一个答案。

最新更新