android - 使用 webview 打开地图 url 的问题
问题描述
我正在使用 WebView 打开地图 url(我通过 Google 地图与对话框共享)。
val webView = findViewById<WebView>(R.id.webview)
val webSettings: WebSettings = webView.settings
webSettings.javaScriptEnabled = true
webView.webViewClient = WebViewClient()
val url = "https://maps.app.goo.gl/ei5DupR88SYBF8Am8"
webView.loadUrl(url)
但是 url 没有像任何其他 url 一样打开。
看起来,“https://”被替换为“intent://”,WebView 无法打开无效的 url。
知道为什么会发生这种情况以及如何避免它吗?
解决方案
我通过覆盖“shouldOverrideUrlLoading”解决了这个问题:
companion object {
const val FALLBACK_URL = "browser_fallback_url="
}
webView.webViewClient = object: WebViewClient() {
override fun shouldOverrideUrlLoading(webView: WebView?, request: WebResourceRequest):
Boolean {
val url = request.url
val urlString = url.toString()
val fallbackUrl = urlString.subSequence(
urlString.indexOf(FALLBACK_URL) + FALLBACK_URL.length,
urlString.length)
.toString()
webView.loadUrl(URLDecoder.decode(fallbackUrl, "UTF-8"))
return true
}
}
推荐阅读
- react-native - 我从 firebase 获取数据,但我无法在仅显示 console.warn 的视图中显示
- jenkins - 是否可以在 SCM URL 中使用 Jenkins 参数化构建中的参数?
- java - 带有 .crt 和 .key 文件的 Java 密钥库设置
- r - R中的单独小时和分钟
- sql - 从不同的表中获取不匹配的数据
- c# - 如何从 C# 在 Exchange 命令行管理程序中启动脚本?
- c# - c#语音识别和合成
- python - 如何在不出现 Unsupported media type 错误的情况下将数据从 React 表单发送到 Django 后端服务器?
- c# - 如何使用 EnvelopedCms 类解密数据,在多个证书存储中搜索证书?
- php - 当我们在另一个 ul 标签中有 ul 标签时,如何修复 html2pdf 中的错误?