如何使用android webview将所选文本动态复制到剪贴板

如何使用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");

我使用Android Webview显示一些文本。我正在为Webview实现LongClickListener。如果我长时间按Webview,我会收到回调,但是如何在Android中以编程方式将所选文本复制到剪贴板。我正在使用链接进行尝试,但它给了我NoSuchMethodException。这是密码

@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中的所有选择,我得到的值都是“”