如何在ActionMode override中获取webview的选中文本
How to get the selected text of webview in ActionMode override
我正在上下文操作菜单中添加一些自定义菜单项。我需要使用在 WebView 中选择的单词提供网络搜索功能。
我使用这段代码覆盖了 ActionMode。
@Override
public void onActionModeStarted(ActionMode mode) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
if (mActionMode == null) {
mActionMode = mode;
Menu menu = mode.getMenu();
mode.getMenuInflater().inflate(R.menu.menu_search, menu);
}
}
super.onActionModeStarted(mode);
}
public void onContextualMenuItemClicked(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_search:
//HERE I WANT TO GET THE TEXT: HOW CAN I?
break;
}
if (mActionMode != null) {
mActionMode.finish();
}
}
我想使用用户在 webview 中选择的词来搜索我的站点,但我无法获取所选文本的方法。怎么弄的,有哪位大侠帮忙啊
提前致谢。
从 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);
}
}
我正在上下文操作菜单中添加一些自定义菜单项。我需要使用在 WebView 中选择的单词提供网络搜索功能。
我使用这段代码覆盖了 ActionMode。
@Override
public void onActionModeStarted(ActionMode mode) {
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
if (mActionMode == null) {
mActionMode = mode;
Menu menu = mode.getMenu();
mode.getMenuInflater().inflate(R.menu.menu_search, menu);
}
}
super.onActionModeStarted(mode);
}
public void onContextualMenuItemClicked(MenuItem item) {
switch (item.getItemId()) {
case R.id.menu_search:
//HERE I WANT TO GET THE TEXT: HOW CAN I?
break;
}
if (mActionMode != null) {
mActionMode.finish();
}
}
我想使用用户在 webview 中选择的词来搜索我的站点,但我无法获取所选文本的方法。怎么弄的,有哪位大侠帮忙啊
提前致谢。
从 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);
}
}