Android Webview:如何在webview中复制所选文本。

时间:2016-03-08 08:12:27

标签: android sqlite webview selection contextual-action-bar

我是android开发的新手,我创建了一个应用程序,用于将选定的webview内容存储到sqlite数据库中。当用户选择单词时,自定义上下文操作栏将显示在webview中。现在我需要在WebView中选择单词。有关如何在WebView中获取所选单词并以String形式返回的任何想法吗?

谢谢

1 个答案:

答案 0 :(得分:2)

WebView获取文本的唯一方法是基于javascript。这不是特定于操作模式,这是根据WebView开发人员应该检索WebView文本选择的方式。观点看法。他们故意决定不提供API来访问Java中的文本选择。

解决方案包括两种方法。

使用Android API >= 19,您可以使用evaluateJavascript

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

在较旧的版本中,您唯一的手段是一个自定义的javascript界面​​,其中一个方法接受String,您应该通过webview.loadUrl调用它来传递相同的内容:

webview.loadUrl("javascript:js.callback(window.getSelection().toString())");

其中js是附加的javascript界面​​:

webview.getSettings().setJavaScriptEnabled(true);
webview.addJavascriptInterface(new WebAppInterface(), "js");

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

Reference: 

How to get the selected text of webview in ActionMode override