No se puede obtener backspace para trabajar en codemirror, bajo Phonegap en Android 4.x?

Necesito un editor de texto / código basado en la web que se comporte bien, para mi aplicación.

Estoy tratando de usar codemirror bajo Phonegap y actualmente estoy teniendo problemas para obtener backspace para trabajar para el texto introducido previamente. Este es un gran problema para mi caso de uso. Ahora he tenido un vistazo alrededor y parece que no es un problema directo codemirror, sino más bien el malarkey teclado android y virtual, ver esta pregunta: Android: Backspace en WebView / BaseInputConnection

Estoy usando Phonegap versión 2.6.0, última versión codemirror (como de anoche) y pruebas en Android 4.2.2. Esto parece ser específico de WebView en Android, ¿podría alguien verificar que no es un problema en iOS?

No me opongo a hacer algún código Java para corregir el problema, pero no estoy seguro de cómo 'enganchar' en la implementación del cordova de WebView, ya que todo el código que se expone a mí consiste en:

package com.mycompany.MyAppName; import android.os.Bundle; import org.apache.cordova.*; public class MyAppName extends DroidGap{ @Override public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); // Set by <content src="index.html" /> in config.xml super.loadUrl(Config.getStartUrl()); //super.loadUrl("file:///android_asset/www/index.html") } } 

A menos que se supone que debo buscar en el árbol fuente de Cordovas. Esencialmente lo que quiero saber es cómo puedo implementar la solución en el enlace de arriba en mi caso. ¡Cualquier ayuda es muy apreciada!

Método de actividad de sobrescritura init:

 public class ProjectName extends DroidGap { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); init(); // Don't forget this, you'll get runtime error otherwise! // The following does the trick: super.appView.getSettings().setUseWideViewPort(true); super.appView.getSettings().setLoadWithOverviewMode(true); // Set by <content src="index.html" /> in config.xml super.loadUrl(Config.getStartUrl()); //super.loadUrl("file:///android_asset/www/index.html") super.setIntegerProperty("loadUrlTimeoutValue", 10000); } /** * Create and initialize web container with default web view objects. */ @Override public void init() { CordovaWebView webView = new CustomWebView(ProjectName.this); CordovaWebViewClient webViewClient; if(android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.HONEYCOMB) { webViewClient = new CordovaWebViewClient(this, webView); } else { webViewClient = new IceCreamCordovaWebViewClient(this, webView); } this.init(webView, webViewClient, new CordovaChromeClient(this, webView)); } } 

Crear en CustomWebView que se extiende CordovaWebView

 public class CustomWebView extends CordovaWebView{ public CustomWebView(Context context) { super(context); } @Override public InputConnection onCreateInputConnection(EditorInfo outAttrs) { MyCustomInputConnection connection = new MyCustomInputConnection(this, false); return connection; } } 

Cree su InputConnection personalizado:

 public class MyCustomInputConnection extends BaseInputConnection{ public MyCustomInputConnection(View targetView, boolean fullEditor) { super(targetView, fullEditor); } @Override public boolean deleteSurroundingText(int beforeLength, int afterLength) { // magic: in latest Android, deleteSurroundingText(1, 0) will be called for backspace if (beforeLength == 1 && afterLength == 0) { // backspace return super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_DOWN, KeyEvent.KEYCODE_DEL)) && super.sendKeyEvent(new KeyEvent(KeyEvent.ACTION_UP, KeyEvent.KEYCODE_DEL)); } return super.deleteSurroundingText(beforeLength, afterLength); } } 
  • Cambiar el fondo del mensaje de error de EditText
  • El cursor de Android 4.0 EditText siempre es invisible para editable = false
  • Phonegap 2.1.0 y android 4.1: Problema de entrada de texto
  • Evita que el desplazamiento ingrese al rellenarlo en la aplicación Android Phonegap
  • EditText: Diferenciar entre cambio de texto por setText () o por entrada de teclado
  • El atributo maxlength de la entrada en html no funciona en HTC One M7
  • Selector de fecha Android 4.1.1 / 4.1.2 Galaxy S3
  • Introduzca la manipulación de claves en Libgdx TextField
  • ¿Cómo puedo detener la capitalización automática en un campo de introducción de texto html en un teléfono Android / Samsung?
  • Ocultar o quitar el botón del teclado en la pantalla CardIO Scann (Android)
  • Multitouch para Android: ACTION_UP no siempre se llama?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.