例如,我的片段中有一个WebView组件。我用它来通过不同的网址加载所有网页,有点愚蠢但高效。如您所知,我们指定我们的webviewclient(如WvjbWebViewClient或jsBridge)来处理所有请求。但是,现在我们有时希望使用WebView加载第三方平台网站,但是,我们不想为它们提供业务功能,不是为了其他任何事情,而是为了我们的通信安全。
我们公司的域名 xxx.com。我想做的是:当Web视图在此域上加载这些网页时,请使用我们的客户WebViewClient,否则使用简单的WebViewClient(新建实例)。如何解决?(我们应该考虑网址重定向吗?
WebViewClient 允许您在 WebView 本身中上载在 Web 视图中选择的任何指定 URL,并且不运行浏览器。对于此功能,满足 shouldOverrideUrlLoad(WebView, String) 方法。如果返回 true - 我们不需要启动第三方浏览器,并在此处上传自己的内容。
下面是一个示例,我们选择是否可以在应用程序中打开内容,或者需要打开浏览器:
public class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(Uri.parse(url).getHost().endsWith("xxx.com")) {
return false;
}
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));
view.getContext().startActivity(intent);
return true;
}
}
如果思考,这会有所帮助。