WebView中的“复制”按钮不起作用-为什么?

时间:2018-12-27 13:05:43

标签: android webview

在我的应用中,我有一个webView,用于显示网站,当我尝试单击“复制”按钮时,它不会复制任何内容。如何解决这个问题?

这是到目前为止我尝试过的方法,但没有帮助:

webView = (WebView) findViewById(R.id.webView1);
        webView.getSettings().setJavaScriptEnabled(true);
        webView.getSettings().setDomStorageEnabled(true);
        webView.getSettings().setDatabaseEnabled(true);
        webView.getSettings().setMinimumFontSize(1);
        webView.getSettings().setMinimumLogicalFontSize(1);
        webView.getSettings().setAllowFileAccess(true);
        webView.getSettings().setAllowContentAccess(true);  

我正在检查Logcat并在单击网站上的“复制”按钮时看到此错误:“

  

未定义(承诺)未定义

“但是,此按钮在浏览器中可以正常使用,但在WebView.中不可用

1 个答案:

答案 0 :(得分:0)

根据您所写的评论,您提到要从网站中提取文本。您需要确定您确切想要的文本,并将其放在HTML代码中。

以下解决方案将允许您提取给定网站的HTML代码,但是您必须将其范围缩小到要进一步提取的文本以及它位于class / id

的哪个属性中。 >

webView.evaluateJavascript(
    "(function() { return ('<html>'+document.getElementsByTagName('html')[0].innerHTML+'</html>'); })();",
     new ValueCallback<String>() {
        @Override
        public void onReceiveValue(String html) {
            Log.d("HTML", html); 
            // This should log the html code within the log cat
        }
});

-想在<{3}}下归功于 Balaji M ,因为它也引起了这个问题。-

~~ 如果您决定更改此问题的方法,我想保留我以前的答案 ~~

由于您已经找到了事件监听器的答案,因此可以在webView中检测何时触发复制按钮,因此现在唯一缺少的功能部分是从ClipBoard粘贴。
应将以下代码放入onCreate方法中:

// Gets a handle to the clipboard service.
ClipboardManager clipboardManager = (ClipboardManager)getSystemService(Context.CLIPBOARD_SERVICE);

现在是时候将剪贴板中的数据复制到我们的String变量或任何其他变量类型中了。

// Get clip data from clipboard.
ClipData clipData = clipboardManager.getPrimaryClip();
// Get item count.
int itemCount = clipData.getItemCount();
if(itemCount > 0){
    // Get source text.
    Item item = clipData.getItemAt(0);
    String copiedData = item.getText().toString();
    //For testing purpose, display toast containig your copied data
   Toast.makeText(getActivity(), copiedData , Toast.LENGTH_LONG).show();
}