Android:如何从网络视图中选择文本
我希望允许用户从网络视图中选择一些文本,并且需要将其作为短信发送。请找到选择文本并复制到剪贴板并从剪贴板提取的方法。我看到了很多例子,但没有什么能真正帮助我......TIA
编辑
使用 @orangmoney52 链接中提供的代码。通过以下更改
getmethod 的第二个参数和 invoke 方法的第二个参数。如果我给 null 就会出现警告..哪一个是正确的?
public void selectAndCopyText() {
try {
Method m = WebView.class.getMethod("emulateShiftHeld", Boolean.TYPE);
m.invoke(BookView.mWebView, false);
} catch (Exception e) {
e.printStackTrace();
// fallback
KeyEvent shiftPressEvent = new KeyEvent(0,0,
KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0);
shiftPressEvent.dispatch(this);
}
}
出现此错误:
05-26 16:41:01.121: WARN/System.err(1096): java.lang.NoSuchMethodException: emulateShiftHeld
i want allow user to select some texts from webview and it need to be send as a text message. pls find way to select text and copy to clipboard and extracting from clipboard. i saw many example but nothing helped me really...TIA
Edit
using the code provided in the link from @orangmoney52. with following changes
getmethod's second parameter and invoke method second parameter. if i give null there warning will come.. which one is correct?
public void selectAndCopyText() {
try {
Method m = WebView.class.getMethod("emulateShiftHeld", Boolean.TYPE);
m.invoke(BookView.mWebView, false);
} catch (Exception e) {
e.printStackTrace();
// fallback
KeyEvent shiftPressEvent = new KeyEvent(0,0,
KeyEvent.ACTION_DOWN,KeyEvent.KEYCODE_SHIFT_LEFT,0,0);
shiftPressEvent.dispatch(this);
}
}
Getting this error:
05-26 16:41:01.121: WARN/System.err(1096): java.lang.NoSuchMethodException: emulateShiftHeld
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
上面的答案看起来非常好,并且您在选择文本时似乎遗漏了一些东西。因此,您需要仔细检查代码并找到您覆盖的 webview 的任何 TouchEvent 。
我尝试了下面的代码,它工作正常...
函数是
在您想要的任何地方调用上面的方法(您可以放置一个按钮并在其单击事件中调用此方法): emulateShiftHeld(mWebView);
The above answers looks perfectly fine and it seems you're missing something while selecting text. So you need to double check the code and find your overridden any TouchEvent of webview.
i Tried below code it works fine...
Function is
Call Above method wherever you want (You can put a button and call this method in its click event): emulateShiftHeld(mWebView);
步骤:1
创建自定义 WebView 类。
此类将在长按 Web 视图文本时覆盖本机操作栏。
它还处理不同版本的 android 的选择情况(在 4.0 及以上版本上测试)
此代码使用 JavaScript 获取选定的文本。
第
2 步:
为 WebView 接口创建单独的类。
一旦 javascript 代码被执行,这个类就会监听事件
第 3 步:
在res>中添加自定义菜单的menu.xml菜单文件夹
我借助下面列出的几个链接来实现此目的:
谢谢你们。
如何在webview上使用javascript
http://developer.android.com/guide/webapps/webview.html#UsingJavaScript
用于注入 javascript
为什么可以我不能在 android 上的 webview 中注入这个 javascript 吗?
来覆盖默认操作栏
如何覆盖android的默认文本选择webview 操作系统 4.1+?
版本 4.0。 4.3 文本选择
Web 视图文本选择未清除
Step: 1
Create custom WebView class.
This class will override the native action bar on long press on the webview text.
Also it handles the the selection case for different version of android (tested on 4.0 onwards)
This code takes the selected text using javascript.
}
Step 2:
create separate class for WebView interface.
This class listnes for event from once javascript code is getting executed
Step 3:
Add menu.xml for custom menu in res > menu folder
I took help of several links listed below to achieve this:
Thanks to you guys.
how to use javascript on webview
http://developer.android.com/guide/webapps/webview.html#UsingJavaScript
for injecting javascript
Why can't I inject this javascript in the webview on android?
for overriding default action bar
How to override default text selection of android webview os 4.1+?
for version 4.0. to 4.3 text selection
Webview text selection not clearing
最简单的方法虽然不像每个制造商实现的复制/粘贴功能那么漂亮,但如下:
https ://bugzilla.wikimedia.org/show_bug.cgi?id=31484
基本上,如果您通过设置自己的
WebChromeClient
webview.setWebChromeClient(...)
那么默认情况下禁用文本选择。要启用它,您的WebChromeClient
需要实现以下方法:The easiest way, although not as pretty as what seems like a per manufacturer implemented copy/paste feature, is the following:
https://bugzilla.wikimedia.org/show_bug.cgi?id=31484
Basically, if you're setting your own
WebChromeClient
viawebview.setWebChromeClient(...)
then text selection is disabled by default. To enable it yourWebChromeClient
needs to have to following method implemented:@vnshetty,使用@orangmoney52 链接中提供的代码,我几个月前就能够完成这个问题。您可以在菜单中创建一个按钮来复制文本。然后,在 onOptionsItemSelected 中,您可以有这样的子句:
@vnshetty, using the code provided in the link from @orangmoney52, I was able to complete this problem a few months ago. You can create a button in your menu that allows you to copy text. Then, in onOptionsItemSelected, you can have a clause like this: