微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

监听 WebView 中的按钮点击并在其背后实现某些逻辑

如何解决监听 WebView 中的按钮点击并在其背后实现某些逻辑

我在我的应用程序中显示一个 WebViewWebView 包含一个 "Return" 按钮。如果发生这种情况,我想监听此按钮点击并完成 activity A 并打开 activity B

为了实现这一点,我想出了两个解决方案:

A) 添加 WebViewClient 侦听器并在 shouldOverrideUrlLoading 回调上执行我的逻辑。

B) 使用 Deep Links

这两种解决方案中哪个更正确以及为什么?我认为当您想从 其他移动应用X 目的地 而不是其他方式时,通常会使用深层链接。我在这里弄错了什么吗?

解决方法

据我所知,您必须在 deep 中使用 link shouldOverrideUrlLoadingshouldOverrideUrlLoading 用于:

如果没有提供 WebViewClient,默认情况下 WebView 会询问 活动管理器为 URL 选择合适的处理程序

另一方面,当我们打开一个 web 视图时,我们可以处理一些情况 shouldOverrideUrlLoading fun

webView.webViewClient = object : WebViewClient() {
    override fun shouldOverrideUrlLoading(view: WebView,request: WebResourceRequest): Boolean {
        val url = request.url.toString()
            if (url.startsWith("intent://")) {
                try {
                    val intent = Intent.parseUri(url,Intent.URI_INTENT_SCHEME)
                    startActivity(intent)
                } catch (error: ActivityNotFoundException) {
                    return false
                }
                return true
            }
        return false
    }
}

那么在你的情况下:

我想听这个按钮点击并完成活动 A 和 如果发生这种情况,请打开活动 B。

您必须在 deep 中使用 link shouldOverrideUrlLoading

当点击的链接或程序化请求调用网络 URI 意图时, Android 系统按顺序尝试以下每个操作 顺序,直到请求成功:

-打开用户首选的可以处理 URI 的应用程序(如果已指定)。

-打开唯一可以处理 URI 的应用。

-允许用户从对话框中选择应用。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。