Intereting Posts
Галерея изображений с горизонтальной прокруткой Android Кордова Ошибка при использовании Cordova-Android 6.2.0 – getFileResources не является функцией CustomLoading в android (ошибка: ожидаемый ресурс типа drawable) Как отслеживать время «на экране» на Android? Диспетчер IR для Android должен быть одним из: Samsung Galaxy Tablet не позволяет вводить числа с плавающей запятой входы с типом «число» Как получить эту крест-кнопку / изображение на границе пользовательского диалогового окна? Манипулирование данными в Интернете на Android Как вы получаете приложение Android для автоматического запуска после загрузки и установки? Проблемы с сертификатами WSS и SSL в Android Получение adb для галактики samsung для работы Android Keystore – может ли пользовательский ключ извлекаться root, если он настроен для этого пользователя? Файл офлайн-файла Osmdroid Android listview разные виды для каждого элемента Работа с Enums в android

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

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