I posted an answer to a similar question. Sharing it here for quick access to the answer.
For API >= 19 you can use evaluateJavascript
mWebview.evaluateJavascript("(function(){return window.getSelection().toString()})()",
new ValueCallback<String>()
{
@Override
public void onReceiveValue(String value)
{
Log.v(TAG, "Webview selected text: " + value);
}
});
For API < 19 you can use evaluateJavascript
you use the loadUrl
method like below:
mWebview.getSettings().setJavaScriptEnabled(true);
mWebview.addJavascriptInterface(new JavaScriptInterface(), "javascriptinterface");
Then when you want to get the selection use the following:
mWebview.loadUrl("javascript:javascriptinterface.callback(window.getSelection().toString())");
And define a WebAppInterface class as below:
public class JavaScriptInterface
{
@JavascriptInterface
public void callback(String value)
{
Log.v(TAG, "SELECTION:" + value);
}
}