Android: deshabilitar la selección de texto en una vista web

Estoy usando una vista web para presentar algunas cosas formateadas en mi aplicación. Para algunas interacciones (que son específicas de ciertos elementos dom) utilizo javascript y WebView.addJavascriptInterface() . Ahora, quiero reconocer un toque largo. Desafortunadamente, onLongTouch , en Android 2.3, se muestran los identificadores para la selección de texto.

¿Cómo puedo desactivar esta selección de texto sin configurar el onTouchListener y devolver true? (Entonces, la interacción con el “sitio web” ya no funciona.

Esto funcionó para mí

 mWebView.setOnLongClickListener(new OnLongClickListener() { @Override public boolean onLongClick(View v) { return true; } }); mWebView.setLongClickable(false); 

No he probado, si no quieres la vibración causada por el clic largo, puedes intentar esto:

 mWebView.setHapticFeedbackEnabled(false); 

Establecer la propiedad webkit css -webkit-user-select en none resolvería el problema.

Ejemplo de CSS para deshabilitar la selección:

 * { -webkit-user-select: none; } 

¡¡Me lo imaginé!! Así es como puedes implementar tu propio oyente de larga duración. En la función longTouch puedes hacer una llamada a tu interfaz de JavaScript.

 var touching = null; $('selector').each(function() { this.addEventListener("touchstart", function(e) { e.preventDefault(); touching = window.setTimeout(longTouch, 500, true); }, false); this.addEventListener("touchend", function(e) { e.preventDefault(); window.clearTimeout(touching); }, false); }); function longTouch(e) { // do something! } 

Esto funciona.

Parece que cortar / pegar mediante pulsación larga está desactivado si utilizó

  articleView.setWebChromeClient(new WebChromeClient(){...}) 

Ver https://bugzilla.wikimedia.org/show_bug.cgi?id=31484

Entonces, si está utilizando setChromeClient y quiere hacer un clic largo para comenzar a copiar / pegar, haga lo siguiente:

  webView.setWebChromeClient(new WebChromeClient(){ [.... other overrides....] // @Override // https://bugzilla.wikimedia.org/show_bug.cgi?id=31484 // If you DO NOT want to start selection by long click, // the remove this function // (All this is undocumented stuff...) public void onSelectionStart(WebView view) { // By default we cancel the selection again, thus disabling // text selection unless the chrome client supports it. // view.notifySelectDialogDismissed(); } }); 

Parece que la única opción es establecer en onTouchListener y escribir su propio código para detectar un clic largo. Luego devuelve true si es un clic largo y false contrario.