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:
- El zoom de la vista de la Web no se enfoca y el niño ve los botones
- CookieSyncManager está ahora obsoleto, ¿qué puedo usar en su lugar?
- Android webview + javascript no mostrar la salida en android 4.0.x, 3.x
- Vista demasiado grande para encajar en la caché de dibujo en Webview dentro de scrollview
- Solicitud de publicación de Android WebView con encabezados personalizados
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.
- Android - AdSense en WebView (para BlackBerry Playbook - Android Runtime)
- ¿Cómo puedo guardar una página web completa mostrada en WebView de Android?
- En appcelerator / titanium mobile, al usar html local en una vista web, ¿cómo puedo cargar una imagen desde y hacer referencia al directorio de datos de la aplicación
- HTML5 <audio> etiqueta que no funciona en Android Webview
- Cargar archivo .HTML local con WebView
- Las actualizaciones de la caché de la aplicación se bloquean en el estado CHECKING
- Sherlock Acción invalidateOptionsMenu ()
- Youtube Video en WebView no se carga
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).
- Vinculación y desvinculación de Android Service a / de Fragment (en ViewPager)
- Cambiar entre vistas con animación de fundido cruzado