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

时间:2017-01-05 04:57:01

标签: android text webview

我使用Android Webview显示一些文字。我正在为Webview实现LongClickListener。如果我长时间按下Webview,我会收到回调,但是如何以编程方式将所选文本复制到Android中的剪贴板。我正在尝试使用链接issue,但它给了我 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;
}

1 个答案:

答案 0 :(得分:1)

截至目前,您无法使用java api复制所选文本或使用所选文本执行任何操作。要执行此操作,您应该使用Javascript函数,这在API&gt; = 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);
    }
});

在onLongClick回调中添加此方法。