如何在安卓中长按获取网页视图超链接的文本?



我正在构建一个Android应用程序,其中网页(如"https://www.youtube.com/"(加载到webView上。现在在该网页中,有一些超链接。

一旦用户长按超链接中的任何一个列表,就会打开列表,并且有许多功能,例如复制链接,在下一次点击中打开链接并复制文本。现在我面临的问题。我无法复制用户长按的锚标签上的文本。

当任何用户长按任何超链接并选择复制文本时,我需要复制超链接文本。有什么我可以做到这一点的吗?

我的长按返回标题和网址。

我参考了很多链接,比如看到

首先,您需要侦听View.OnLongClickListener。您可以通过在WebView上设置侦听器来轻松做到这一点。侦听器必须返回Boolean,如果要复制,则返回false,剪切和粘贴文本选择或返回true

webView.setOnLongClickListener { view ->
// run things on long click on any element in the webview
return@setOnLongClickListener false
}

然后创建一个Handler

val handler = Handler { message ->
val bundle = message.data
for (key in bundle.keySet()) {
Log.d(TAG, "KEY: $key, VALUE: ${bundle.get(key)}")
}
val linkText = bundle.get("title") // here is your link text   
return@Handler true
}

现在你需要获取消息(这个代码必须进入OnLongClickListener

(
val message = handler.obtainMessage()
webView.requestFocusNodeHref(message)

将文本复制到ClipBoard有点复杂。

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
val clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as android.content.ClipboardManager
val clipData = android.content.ClipData.newPlainText("text label", "text to clip")
clipboardManager.primaryClip = clipData
} else {
val clipboardManager = context.getSystemService(Context.CLIPBOARD_SERVICE) as android.text.ClipboardManager
clipboardManager.text = "text to clip"
}

好吧,我今天也在做同样的事情。

最后我用波纹管法:

1.将整个 html 内容保存在 onPageDone(( 中。

  1. 使用 WebView.HitTestResult.getExtra(( 获取 url。

  2. 然后在 href 链接标签之间对文本进行子串串。

一种笨拙的方式,希望它能帮助你。

最新更新