【问题标题】:How to get text of hyperlink of webview on long press in android?如何在android中长按获取webview超链接的文本?
【发布时间】:2017-12-23 11:17:23
【问题描述】:

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

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

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

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

我参考了很多链接,比如see

【问题讨论】:

  • 显然你会得到一个事件,尝试获取 event.target 的value ?
  • @Jeffin 你怎么能帮上一点忙?
  • 现在我在长按超链接时没有收到任何事件
  • 我可以在超链接上写 OnLongClickListener 我需要该事件的值

标签: javascript android html webview hyperlink


【解决方案1】:

首先,您需要收听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"
}

【讨论】:

    【解决方案2】:

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

    最后我使用波纹管方法:

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

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

    2. 然后将href链接标签中的文本子串起来。

    一个笨拙的方法,希望它可以帮助你。

    【讨论】:

      猜你喜欢
      • 2017-12-21
      • 1970-01-01
      • 2014-01-26
      • 2023-03-22
      • 1970-01-01
      • 1970-01-01
      • 2013-01-28
      • 1970-01-01
      • 2013-11-07
      相关资源
      最近更新 更多