如何使用android webview将所选文本动态复制到剪贴板
我使用Android Webview显示一些文本。我正在为Webview实现LongClickListener。如果我长时间按Webview,我会收到回调,但是如何在Android中以编程方式将所选文本复制到剪贴板。我正在使用链接进行尝试,但它给了我NoSuchMethodException。这是密码如何使用android webview将所选文本动态复制到剪贴板,android,text,webview,Android,Text,Webview,我使用Android Webview显示一些文本。我正在为Webview实现LongClickListener。如果我长时间按Webview,我会收到回调,但是如何在Android中以编程方式将所选文本复制到剪贴板。我正在使用链接进行尝试,但它给了我NoSuchMethodException。这是密码 @Override public boolean onLongClick(View view) { System.out.println("long click of webview");
@Override
public boolean onLongClick(View view) {
System.out.println("long click of webview");
Class<? extends WebView> webViewClass = mWebvView.getClass();
java.lang.Class<WebView>[] parameterType = null;
java.lang.reflect.Method method = null;
try {
method = webViewClass.getDeclaredMethod("copySelection", parameterType);
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
java.lang.Object[] argument = null;
try {
method.invoke(mWebvView, argument);
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (InvocationTargetException e) {
e.printStackTrace();
}
System.out.println("Copied selection into clipboard");
return true;
}
@覆盖
仅长按公共布尔值(视图){
System.out.println(“Web视图的长点击”);
类到目前为止,您不能使用java api复制所选文本或对所选文本执行任何操作。要执行此操作,您应该使用Javascript函数,这在api>=19中非常有效
webview.evaluateJavascript("(function(){return window.getSelection().toString()})()",
new ValueCallback<String>()
{
@Override
public void onReceiveValue(String value)
{
ClipboardManager clipboard = (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
ClipData clip = ClipData.newPlainText("webView", value);
clipboard.setPrimaryClip(clip);
}
});
webview.evaluateJavascript(((function(){return window.getSelection().toString()})()”,
新的ValueCallback()
{
@凌驾
公共无效onReceiveValue(字符串值)
{
ClipboardManager剪贴板=(ClipboardManager)getSystemService(Context.clipboard\u服务);
clipdataclip=ClipData.newPlainText(“webView”,值);
剪贴板.setPrimaryClip(clip);
}
});
将此方法添加到onLongClick回调中。我已经尝试过此方法,但对于onReceiveValue中的所有选择,我得到的值都是“”