Как ввести ввод в поле ввода webView программно в Android Kitkat (4.4)

Мне нужно программно ввести входные данные для управления входными данными. Для этого я использовал webView.dispatchKeyEvent (), и он отлично работал до версии Android 4.3, но он не работает в версии 4.4 (Kitkat – Chromium webView).

Я вижу приведенные ниже инструкции в logcat:

W/UnimplementedWebViewApi(9737): Unimplemented WebView method onKeyMultiple called from: android.webkit.WebView.onKeyMultiple(WebView.java:2179) 

Я попытался dispatchKeyEvent (), onKeyDown (), но ничего не работает для Chromium webView в 4.4, пожалуйста, кто-то может сообщить мне, есть ли способ отправить входные данные в поля webView программно.

Обратите внимание, что я ищу универсальное решение для любой веб-страницы (например: поля имени пользователя и пароля в URL-адресе Facebook), где я не знаю имя / идентификатор элемента управления ввода, поэтому не могу использовать простой метод Javascript для загрузки ввода.

Для этого вы можете использовать класс Instrumentation . Я тестировал его с Android 4.4, и он работает.

Сначала убедитесь, что WebView имеет фокус, затем вызовите sendCharacterSync() для отправки отдельных ключевых событий. Обратите внимание, что эти вызовы должны выполняться из фонового потока (это обязательно).

Например:

 final Instrumentation instrumentation = new Instrumentation(); new Thread(new Runnable() { @Override public void run() { instrumentation.sendCharacterSync(KeyEvent.KEYCODE_H); instrumentation.sendCharacterSync(KeyEvent.KEYCODE_I); instrumentation.sendCharacterSync(KeyEvent.KEYCODE_TAB); instrumentation.sendCharacterSync(KeyEvent.KEYCODE_T); instrumentation.sendCharacterSync(KeyEvent.KEYCODE_H); instrumentation.sendCharacterSync(KeyEvent.KEYCODE_E); instrumentation.sendCharacterSync(KeyEvent.KEYCODE_R); instrumentation.sendCharacterSync(KeyEvent.KEYCODE_E); } }).start(); 

Единственная проблема заключается в том, что вы получаете эффект «пишущей машинки» (т.е. буквы появляются один за другим, а не все сразу).

Intereting Posts