onkeylistener - Cómo proporcionar entrada a un campo de entrada webView mediante programación en Android Kitkat(4.4)
webview android ejemplo (1)
Puede usar la clase de Instrumentation
para esto. Lo probé con Android 4.4 y funciona.
Primero asegúrese de que WebView
tenga foco, luego llame a sendCharacterSync()
para enviar eventos clave individuales. Tenga en cuenta que estas llamadas se deben realizar desde un hilo 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).
Necesito proporcionar entrada a un control de entrada de webview programmatically. Para eso estaba usando webView.dispatchKeyEvent () y funcionó bien hasta la versión Android 4.3 pero no está funcionando en la versión 4.4 (Kitkat - Chromium webView).
Veo las declaraciones a continuación en el logcat:
W/UnimplementedWebViewApi(9737): Unimplemented WebView method onKeyMultiple called from: android.webkit.WebView.onKeyMultiple(WebView.java:2179)
He intentado con dispatchKeyEvent (), onKeyDown () pero no funciona nada para Chromium webView en 4.4. Por favor, alguien me puede decir si hay una forma de enviar entradas a los campos webView mediante programación.
Tenga en cuenta que estoy buscando una solución genérica para cualquier página web (por ejemplo, campos de nombre de usuario y contraseña en la URL de Facebook) donde no conozco el nombre / id del control de entrada, así que no puedo usar un método JavaScript para cargar datos.