【发布时间】:2011-05-12 21:13:47
【问题描述】:
现在我有一个加载 web 视图的应用程序,所有点击都保留在应用程序内。我想做的是,当在应用程序中单击某个链接(例如,http://www.google.com)时,它会打开默认浏览器。如果有人有什么想法,请告诉我!
【问题讨论】:
标签: android android-webview android-browser
现在我有一个加载 web 视图的应用程序,所有点击都保留在应用程序内。我想做的是,当在应用程序中单击某个链接(例如,http://www.google.com)时,它会打开默认浏览器。如果有人有什么想法,请告诉我!
【问题讨论】:
标签: android android-webview android-browser
由于这是有关 WebView 中外部重定向的首要问题之一,因此这里有一个 Kotlin 上的“现代”解决方案:
webView.webViewClient = object : WebViewClient() {
override fun shouldOverrideUrlLoading(
view: WebView?,
request: WebResourceRequest?
): Boolean {
val url = request?.url ?: return false
//you can do checks here e.g. url.host equals to target one
startActivity(Intent(Intent.ACTION_VIEW, url))
return true
}
}
【讨论】:
WebView webview = (WebView) findViewById(R.id.webview);
webview.loadUrl(https://whatoplay.com/);
您不必包含此代码。
// webview.setWebViewClient(new WebViewClient());
改为使用下面的代码。
webview.setWebViewClient(new WebViewClient()
{
public boolean shouldOverrideUrlLoading(WebView view, String url)
{
String url2="https://whatoplay.com/";
// all links with in ur site will be open inside the webview
//links that start ur domain example(http://www.example.com/)
if (url != null && url.startsWith(url2)){
return false;
}
// all links that points outside the site will be open in a normal android browser
else
{
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
}
}
});
【讨论】:
我今天必须做同样的事情,我在 StackOverflow 上找到了一个非常有用的答案,我想在这里分享,以防其他人需要它。
webView.setWebViewClient(new WebViewClient(){
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url != null && (url.startsWith("http://") || url.startsWith("https://"))) {
view.getContext().startActivity(
new Intent(Intent.ACTION_VIEW, Uri.parse(url)));
return true;
} else {
return false;
}
}
});
【讨论】:
shouldOverrideUrlLoading(WebView view, String url) 在 API 24 中已弃用。请检查 this answer。
【讨论】:
您可以为此使用 Intent:
Uri uriUrl = Uri.parse("http://www.google.com/");
Intent launchBrowser = new Intent(Intent.ACTION_VIEW, uriUrl);
startActivity(launchBrowser);
【讨论】:
您可以为此使用 Intent:
Intent browserIntent = new Intent("android.intent.action.VIEW", Uri.parse("your Url"));
startActivity(browserIntent);
【讨论】: