如何在默认浏览器中打开外部 URL 并在 WebView Android 中打开所有内部链接?
How to open external URL in default browser and all internal links in WebView Android?
我在我的页面中使用 WebView
并使用本地文件 assets
在 WebView
中显示,但在主 HTML 页面外部网站(非本地)和我只想在用户设备的默认浏览器中打开 link
这是我在 'onCreate' 方法中的代码
WebView v;
v=(WebView) rootView.findViewById(R.id.webView1);
v.getSettings().setJavaScriptEnabled(true);
WebViewClient vc= new WebViewClient();
v.setWebViewClient(vc);
v.loadUrl("file:///android_asset/home.html");
当我 运行 应用程序时,内部 link 运行良好,但外部 link "www.apple.com" 在网络视图中
我搜索了同样的问题并找到了这个解决方案,但仍然是外部 link 在 WebView 中打开
WebView webView = (WebView) rootView.findViewById(R.id.webView1);
webView.setWebViewClient(new MyWebViewClient());
String url = "file:///android_asset/home.html";
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
和class
class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.contains("http")){ // Could be cleverer and use a regex
return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser
} else {
view.loadUrl(url); // Stay within this webview and load url
return true;
}
}
}
改变
if (url.contains("http")) { // Could be cleverer and use a regex
return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser
} else {
view.loadUrl(url); // Stay within this webview and load url
return true;
}
至
if (url.contains("http")) { // Could be cleverer and use a regex
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
mContext.startActivity(intent);
return true;
}
return false;
注意:将 mContext
替换为您的 activity 上下文。
我在我的页面中使用 WebView
并使用本地文件 assets
在 WebView
中显示,但在主 HTML 页面外部网站(非本地)和我只想在用户设备的默认浏览器中打开 link
这是我在 'onCreate' 方法中的代码
WebView v;
v=(WebView) rootView.findViewById(R.id.webView1);
v.getSettings().setJavaScriptEnabled(true);
WebViewClient vc= new WebViewClient();
v.setWebViewClient(vc);
v.loadUrl("file:///android_asset/home.html");
当我 运行 应用程序时,内部 link 运行良好,但外部 link "www.apple.com" 在网络视图中
我搜索了同样的问题并找到了这个解决方案,但仍然是外部 link 在 WebView 中打开
WebView webView = (WebView) rootView.findViewById(R.id.webView1);
webView.setWebViewClient(new MyWebViewClient());
String url = "file:///android_asset/home.html";
webView.getSettings().setJavaScriptEnabled(true);
webView.loadUrl(url);
和class
class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.contains("http")){ // Could be cleverer and use a regex
return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser
} else {
view.loadUrl(url); // Stay within this webview and load url
return true;
}
}
}
改变
if (url.contains("http")) { // Could be cleverer and use a regex
return super.shouldOverrideUrlLoading(view, url); // Leave webview and use browser
} else {
view.loadUrl(url); // Stay within this webview and load url
return true;
}
至
if (url.contains("http")) { // Could be cleverer and use a regex
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
mContext.startActivity(intent);
return true;
}
return false;
注意:将 mContext
替换为您的 activity 上下文。