如何解决监听 WebView 中的按钮点击并在其背后实现某些逻辑
我在我的应用程序中显示了一个 WebView
。 WebView
包含一个 "Return"
按钮。如果发生这种情况,我想监听此按钮点击并完成 activity A
并打开 activity B
。
为了实现这一点,我想出了两个解决方案:
A) 添加 WebViewClient
侦听器并在 shouldOverrideUrlLoading
回调上执行我的逻辑。
B) 使用 Deep Links
这两种解决方案中哪个更正确以及为什么?我认为当您想从 其他移动应用 到 X 目的地 而不是其他方式时,通常会使用深层链接。我在这里弄错了什么吗?
解决方法
据我所知,您必须在 deep
中使用 link
shouldOverrideUrlLoading
,shouldOverrideUrlLoading
用于:
如果没有提供 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 举报,一经查实,本站将立刻删除。