Kotlin WebView loadUrl 将 https 地址转换为 Intent,导致 ERR_UNKNOWN_URL_SCHEME。我没有使用任何“mailto”、“tel”等

问题描述 投票:0回答:1

WebView loadUrl 将 https 地址转换为意图,导致 ERR_UNKNOWN_URL_SCHEME。我没有使用任何“mailto”、“tel”等。

我在 Compose 中使用 WebView。 在 Android Studio 模拟器中运行。

在我的计算机中使用相同的地址,它可以正常工作。 在模拟器中使用相同的地址无法正常工作。

[http://maps.google.com/maps?z=16&t=h&q=loc:18.2569533+-66.006805&hl=en]

这是错误:

WebView generated error

这是我的职责:

@OptIn(ExperimentalComposeUiApi::class)
@SuppressLint("SetJavaScriptEnabled")
@Composable
fun WebViewScreen(location: LatLng){ 

val url = "http://maps.google.com/maps?z=16&t=h&q=loc:${location.latitude}+${location.longitude}&hl=${Locale.getDefault().language}"

AndroidView(
    modifier = Modifier
        .pointerInteropFilter {
        when (it.action) {
            MotionEvent.ACTION_DOWN -> {}
            MotionEvent.ACTION_MOVE -> {}
            MotionEvent.ACTION_UP -> {}
            else ->  false
        }
        true
    },
    factory = { context ->
        WebView(context).apply {
            layoutParams = ViewGroup.LayoutParams(
                ViewGroup.LayoutParams.MATCH_PARENT,
                ViewGroup.LayoutParams.MATCH_PARENT
            )
            settings.javaScriptEnabled = true
            webViewClient = WebViewClient()

            settings.loadWithOverviewMode = true
            settings.useWideViewPort = true
            settings.setSupportZoom(true)

            loadUrl(url)
        }
    },
    update = { webView ->
        webView.loadUrl(url)
    }
)
}
kotlin webview android-jetpack-compose
1个回答
0
投票

问题是由模拟器引起的。我在 SDK 管理器中更新了 Android 模拟器。

您必须重新创建模拟器才能使更新生效,因此请备份坏模拟器上的数据以将其复制到新模拟器。

我找到了另一个解决方案,但对我不起作用。也许无论如何我都必须重新创建模拟器才能使其正常工作。

© www.soinside.com 2019 - 2024. All rights reserved.