Cómo proporcionar entrada a un campo de entrada webView mediante programación en Android Kitkat (4.4)

Tengo que proporcionar la entrada a un control de entrada de visualización web de forma programática. Para eso estaba usando webView.dispatchKeyEvent () y funcionó bien hasta la versión de Android 4.3, pero no está funcionando en la versión 4.4 (Kitkat – Chromium webView).

Veo las siguientes declaraciones en el logcat:

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

He intentado dispatchKeyEvent (), onKeyDown () pero nada funciona para Chromium webView en 4.4, por favor, alguien puede hacerme saber si hay una manera de enviar entradas a los campos de webView mediante programación.

Tengo en cuenta que estoy buscando una solución genérica para cualquier página web (por ejemplo: nombre de usuario y campos de contraseña en la URL de Facebook) donde no sé el nombre / id del control de entrada por lo que no puede utilizar un método simple Javascript para la carga de entrada.

Puede utilizar la clase Instrumentation para esto. Lo he probado con Android 4.4 y funciona.

Primero asegúrese de que el WebView tiene enfoque y, a continuación, llame a sendCharacterSync() para enviar eventos clave individuales. Tenga en cuenta que estas llamadas deben realizarse desde un subproceso de fondo (esto es obligatorio).

Por ejemplo:

 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(); 

El único problema es que obtienes un efecto de "máquina de escribir" (es decir, las letras aparecen una por una, no todas a la vez).

  • Android WebView - Configuración del enfoque de campo HTML con Javascript
  • Se rehusó a mostrar un marco porque establecía X-Frame-Options en 'DENY en android webview
  • Android WebView estilo background-color: transparente ignorado en android 2.2
  • ¿Cómo puedo copiar y pegar desde una vista web iónica?
  • ¿WebView saveState () preserva variables / entorno de JavaScript?
  • Android WebView dentro de ScrollView solo desplaza scrollview
  • Vista web de Android Timeout si tarda más de un cierto tiempo en cargar
  • Android: cómo saber si una vista se desplaza
  • Android - Multiple onReceivedHttpAuthRequest con WebView
  • Cómo obtener Bitmap de WebView genera un fallo de OutOfMemory
  • Cómo enviar texto a través de formularios mediante JSoup
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.