Aru*_*kar 2 android webview actionmode
我在上下文操作菜单中添加了一些自定义菜单项.我需要使用WebView中选择的单词提供Web搜索功能.
我使用此代码覆盖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();
}
}
Run Code Online (Sandbox Code Playgroud)
我想使用webview中用户选择的单词搜索我的网站,但我无法获得所选文本.我怎么能得到那个,请任何人帮忙.
提前致谢.
Sta*_*tan 13
从a获取文本的唯一方法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);
}
});
Run Code Online (Sandbox Code Playgroud)
在较旧的版本中,您唯一的选择是使用单个方法接受的自定义JavaScript界面String,您应该通过webview.loadUrl传递相同的东西来调用:
webview.loadUrl("javascript:js.callback(window.getSelection().toString())");
Run Code Online (Sandbox Code Playgroud)
js附加的javascript界面在哪里:
webview.getSettings().setJavaScriptEnabled(true);
webview.addJavascriptInterface(new WebAppInterface(), "js");
Run Code Online (Sandbox Code Playgroud)
和
public class WebAppInterface
{
@JavascriptInterface
public void callback(String value)
{
Log.v(TAG, "SELECTION:" + value);
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5242 次 |
| 最近记录: |