Intereting Posts
Emulate Back Button с наложением в Android Как преобразовать строку Base64 в образ BitMap, чтобы показать его в ImageView? Ошибка идентификации идентификатора найдена для атрибута даже после использования пространства имен http://schemas.android.com/apk/res-auto RecyclerView itemView OnGlobalLayoutListener не срабатывает для всех itemViews Включить связь между двумя приложениями Android с помощью пользовательских разрешений Установлена ​​последняя версия Android Studio, Исключение произошло, когда я построил проект? IllegalArgumentException: com.google.android.gms.common.internal.db TaskCompletionSource и отклонение причин, по которым не отображаются несколько настраиваемых alertdialogs Как получить заказы на возврат Google? Как я могу найти файл базы данных SQLite на своем компьютере? Как добавить полосы прокрутки в LinearLayout в Android? Программно изменить цвет макета макета Как создать фон градиента для LinearLayout? Camera.Parameters.FLASH_MODE_TORCH для Android 2.1 XMPp + openfire + подтверждение сервера отправителю

Как ввести ввод в поле ввода 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(); 

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