从 WebView 中的页面在外部浏览器中打开 link
opening link in external browser from page in WebView
我正在开发一个 angular 网站,该网站从 WebView 加载到应用程序中,其中只有一个链接必须在应用程序外部(外部浏览器)打开
我需要一种方法来从 JavaScript 处理这个问题,而不是在 android 方面做额外的工作。
我已经尝试了一些方法,包括:
window.open("url","_system")
(navigator as any).app.loadUrl("http://google.com", {openExternal : true});
嗯,没有这样的东西
相反,它必须从 android 应用程序代码中处理。当您需要在外部浏览器中打开它时,您可以向 url 添加一个参数(这里是 external=true
),然后在您的 webview url 加载中检查该参数,如下所示:
webView.setWebViewClient(new WebViewClient(){
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if((String.valueOf(request.getUrl())).contains("external=true")) {
Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
view.getContext().startActivity(intent);
return true;
} else {
view.loadUrl(String.valueOf(request.getUrl()));
}
return true;
}
});
我正在开发一个 angular 网站,该网站从 WebView 加载到应用程序中,其中只有一个链接必须在应用程序外部(外部浏览器)打开
我需要一种方法来从 JavaScript 处理这个问题,而不是在 android 方面做额外的工作。 我已经尝试了一些方法,包括:
window.open("url","_system")
(navigator as any).app.loadUrl("http://google.com", {openExternal : true});
嗯,没有这样的东西
相反,它必须从 android 应用程序代码中处理。当您需要在外部浏览器中打开它时,您可以向 url 添加一个参数(这里是 external=true
),然后在您的 webview url 加载中检查该参数,如下所示:
webView.setWebViewClient(new WebViewClient(){
@RequiresApi(api = Build.VERSION_CODES.N)
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
if((String.valueOf(request.getUrl())).contains("external=true")) {
Intent intent = new Intent(Intent.ACTION_VIEW, request.getUrl());
view.getContext().startActivity(intent);
return true;
} else {
view.loadUrl(String.valueOf(request.getUrl()));
}
return true;
}
});