如何在app中打开浏览器中与webview url无关的链接

时间:2017-12-01 17:00:48

标签: android kotlin

如何在浏览器中打开与webview url无关的外部链接,我正在使用kotlin lang在webview中创建android应用程序。 例如。 mydomain.com/链接应该在webview中打开        -notmydomain.com/应该在浏览器中打开

3 个答案:

答案 0 :(得分:2)

试试这个: -

在下面的代码中,我们只加载那些与特定域相匹配的URL,其余部分将导航到浏览器。您可以根据需要自定义正则表达式。在这里,我重写了两种方法,因为在api级别21中弃用了 shouldOverrideUrlLoading

val webview = findViewById<WebView>(R.id.webview)
        webview.webViewClient = object : WebViewClient() {
            override fun shouldOverrideUrlLoading(view: WebView?, request: WebResourceRequest?): Boolean {
                val url: String = request?.url.toString()
                if (match(url,"(http|https)://(.*).kotlinlang.org/")) {
                    webview?.loadUrl(url)
                } else {
                    val i = Intent(Intent.ACTION_VIEW)
                    i.data = Uri.parse(url)
                    startActivity(i)
                }
                return true
            }

            override fun shouldOverrideUrlLoading(view: WebView?, url: String): Boolean {
                if (match(url,"(http|https)://(.*).kotlinlang.org/")) {
                    webview?.loadUrl(url)
                } else {
                    val i = Intent(Intent.ACTION_VIEW)
                    i.data = Uri.parse(url)
                    startActivity(i)
                }
                return true
            }
        }
        webview.loadUrl("https://kotlinlang.org/")

答案 1 :(得分:1)

val url = "http://www.example.com"
val i = Intent(Intent.ACTION_VIEW)
i.data = Uri.parse(url)
startActivity(i)

它对我有用,在kotlin中使用它。

答案 2 :(得分:0)

String url = "http://www.example.com";
Intent i = new Intent(Intent.ACTION_VIEW);
i.setData(Uri.parse(url));
startActivity(i);

BTW有时检查网址是否真的是网络网址也是一件好事。您想播放由播放应用程序打开的商店URL,而不是Webview加载播放商店页面

URLUtil.isNetworkUrl(url)