2015-02-03 13 views
6

Sto sviluppando un'applicazione in cui ho bisogno di ottenere il testo selezionato.Come ottenere il testo selezionato in WebView Android

Ho una barra di azione contestuale personalizzata, che viene visualizzata quando l'utente seleziona un testo in Webview. Voglio ottenere il testo evidenziato sotto i gestori di selezione, al clic del mio pulsante della barra delle azioni.

La domanda era precedentemente rivolta, How to get the selected text in android webview.

Ma non ha avuto soluzione.

sto cercando qualcosa di simile myWebView.getSelection()

+0

Credo che si dovrebbe rivedere questo: http://stackoverflow.com/questions/22336903/use-a-custom-contextual-action-bar-for- WebView-text-selezione –

risposta

0

ho inviato una risposta ad una domanda simile. Condivisi qui per un rapido accesso alla risposta.

Per API> = 19 è possibile utilizzare evaluateJavascript

mWebview.evaluateJavascript("(function(){return window.getSelection().toString()})()", 
new ValueCallback<String>() 
{ 
    @Override 
    public void onReceiveValue(String value) 
    { 
     Log.v(TAG, "Webview selected text: " + value); 
    } 
}); 

Per API < 19 è possibile utilizzare evaluateJavascript si utilizza il metodo loadUrl come di seguito:

mWebview.getSettings().setJavaScriptEnabled(true); 
mWebview.addJavascriptInterface(new JavaScriptInterface(), "javascriptinterface"); 

Poi, quando si desidera ottenere il selezione utilizzare il seguente:

mWebview.loadUrl("javascript:javascriptinterface.callback(window.getSelection().toString())");

E definire una classe WebAppInterface come di seguito:

public class JavaScriptInterface 
{ 
    @JavascriptInterface 
    public void callback(String value) 
    { 
     Log.v(TAG, "SELECTION:" + value); 
    } 
} 
Problemi correlati