我使用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;
}
答案 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回调中添加此方法。