使用 webview 打开地图 url 的问题
Issue with maps url opening with webview
我正在使用 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
}
}
我正在使用 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
}
}