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