Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Reemplazo de teclado Android Web-view

¿Es posible incrustar una vista web en una aplicación de reemplazo de teclado para Android?

Tengo una interfaz escrita en javascript, y me gustaría integrar eso en una aplicación de reemplazo de teclado de Android. Deberá ser capaz de detectar eventos táctiles y enviar cadenas de texto de vuelta a la interfaz de usuario nativa desde la vista web.

He buscado google para esto, pero no puedo encontrar ninguna información sobre cómo crear una vista web en la aplicación de reemplazo de teclado.


EDIT: Proyecto github creado para el boilerplate sobre la base de la respuesta de @ckozl

Https://github.com/billymoon/javascript-android-keyboard-boilerplate

  • ¿Cómo evitar que el navegador Google Chrome android muestre la lupa cuando los usuarios hacen clic en un botón?
  • Los eventos de toque del navegador Android detienen la visualización que se actualiza. Lienzo / elementos - ¿Cómo trabajar?
  • Error al llamar a Appregistry.runApplication en reactivo-nativo
  • Reaccionar la aplicación nativa de Android se ha detenido
  • Cómo evitar eventos de clic en el cuerpo del documento (quizás un error en Córdoba?)
  • ¿Utilizar la intención de compartir de Android en Javascript en Chrome?
  • Pinch Ampliar la vista web
  • Ejecutar Javascript en archivo HTML desde Android
  • One Solution collect form web for “Reemplazo de teclado Android Web-view”

    Sí. En breve. No es una gran idea, pero técnicamente factible. Déjame guiarte a través de un proyecto de muestra rápida, adaptado de la muestra de SoftKeyboard incluida con el androide SDK. Ahora hay una serie de otras cuestiones técnicas a abordar, pero esto debe proporcionarle un punto de partida básico ….

    Para empezar, vamos a crear un diseño básico para usar como nuestro teclado:

    \ Res \ layout \ input.xml:

    <?xml version="1.0" encoding="utf-8"?> <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="wrap_content" > <WebView android:id="@+id/myWebView" android:layout_width="match_parent" android:layout_height="600dp" /> </FrameLayout> 

    Esto es requerido por android para aceptar nuestro IME

    \ Res \ xml \ method.xml:

     <?xml version="1.0" encoding="utf-8"?> <input-method xmlns:android="http://schemas.android.com/apk/res/android" /> 

    Ahora en nuestro manifiesto \ AndroidManifest.xml

     <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.android.softkeyboard"> <uses-sdk android:minSdkVersion="13" android:targetSdkVersion="13" /> <uses-permission android:name="android.permission.INTERNET" /> <application android:label="SoftKeyboard"> <service android:name="SoftKeyboard" android:permission="android.permission.BIND_INPUT_METHOD" > <intent-filter> <action android:name="android.view.InputMethod" /> </intent-filter> <meta-data android:name="android.view.im" android:resource="@xml/method" /> </service> </application> </manifest> 

    Obviamente el uses-sdk y user-permission están a la altura de la aplicación y no son requeridos por este código (no estoy usando ningún archivo de Internet aquí, pero puedes, lo probé y funcionó …)

    Ahora defina un teclado simple \ src … \ SoftKeyboard.java:

     package com.example.android.softkeyboard; import android.inputmethodservice.InputMethodService; import android.inputmethodservice.KeyboardView; import android.view.View; import android.webkit.WebView; public class SoftKeyboard extends InputMethodService implements KeyboardView.OnKeyboardActionListener { private WebView myWebView = null; @Override public View onCreateInputView() { View view = getLayoutInflater().inflate(R.layout.input, null); myWebView = (WebView) view.findViewById(R.id.myWebView); myWebView.getSettings().setJavaScriptEnabled(true); myWebView.addJavascriptInterface(jsInterface, "android"); return view; } private Object jsInterface = new Object() { @SuppressWarnings("unused") public void sendKeys() { getCurrentInputConnection().setComposingText("how do ya like me now?", 1); } }; @Override public void onWindowShown() { super.onWindowShown(); myWebView.loadUrl("file:///android_asset/keyboard_test.html"); } @Override public void onKey(int primaryCode, int[] keyCodes) {} @Override public void onPress(int primaryCode) {} @Override public void onRelease(int primaryCode) {} @Override public void onText(CharSequence text) {} @Override public void swipeDown() {} @Override public void swipeLeft() {} @Override public void swipeRight() {} @Override public void swipeUp() {} } 

    Aquí básicamente creamos una webview luego llenarlo desde un archivo de activos y vincular una interfaz simple a ella después de habilitar javascript

    Aquí está el activo html: * \ assets \ keyboard_test.html *

     <!DOCTYPE html> <html> <head> <title>test</title> <style> button { display:block; margin:300px auto; width:400px; padding:60px; } </style> </head> <body> <button onclick="android.sendKeys()">yeah buddy!</button> </body> </html> 

    Y eso es todo, ejecútelo y obtendrá un teclado con un solo botón y cuando lo empuje el javascript enviará texto al compositor de entrada …

    Espero que ayude a buscar

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.