Android Webview:如何在webview中复制选中的文本。
Android Webview : How to copy selected text in webview.
我是 android 开发新手,我正在创建一个应用程序来将 selected webview 内容存储到 sqlite 数据库中。当 word 的用户 select 时,自定义上下文操作栏将显示在 webview 中。现在我需要在 WebView 中获取 selected word。关于如何在 WebView 中获取 selected word 和 return 作为字符串的任何想法?
谢谢
从 WebView
获取文本选择的唯一方法是基于 javascript。这并非特定于操作模式,根据 WebView
开发人员的观点,这就是 WebView
文本选择应该如何检索。他们故意决定不提供 API 来访问 Java.
中的文本选择
解决方案包括 2 种方法。
使用 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:
我是 android 开发新手,我正在创建一个应用程序来将 selected webview 内容存储到 sqlite 数据库中。当 word 的用户 select 时,自定义上下文操作栏将显示在 webview 中。现在我需要在 WebView 中获取 selected word。关于如何在 WebView 中获取 selected word 和 return 作为字符串的任何想法?
谢谢
从 WebView
获取文本选择的唯一方法是基于 javascript。这并非特定于操作模式,根据 WebView
开发人员的观点,这就是 WebView
文本选择应该如何检索。他们故意决定不提供 API 来访问 Java.
解决方案包括 2 种方法。
使用 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: