继承WebViewClient重写shouldOverrideUrlLoading(WebView webview, String url)。
返回false表示让系统使用webview来加载url。
返回true表示人为操作,如果里面没有逻辑且返回true,就什么都不会执行
我的代码(注意:只适合android控制页面跳转,不适合web控制页面跳转)
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
LogUtils.d("shouldOverrideUrlLoading: " + url);
String[] urlArray = url.split("html");
String urlCopy = SharedPreferenceUtils.getCustomAppProfile(PreferenceKey.URL);
if (url.equals(urlCopy)) {
LogUtils.d("防止首页重复加载");
} else
if (urlCopy.contains(urlArray[0])) {
//有那种在播放视频页面中,点击其他视频,开始播放,但还是当前页面,只是视频不一样,在返回时不用返回很多次
LogUtils.d("关闭上一个同一个页面");
//此处是回调,将url回调到xxxActivity,自己跳自己,只是url不同
Router.getInstance().handleWebUrl(mFragment, url);
if (mFragment.getActivity() != null) {
mFragment.getActivity().finish();
}
} else {
LogUtils.d("打开一个新的页面");
SharedPreferenceUtils.setCustomAppProfile(PreferenceKey.URL, url);
//此处是回调,将url回调到xxxActivity,自己跳自己,只是url不同
Router.getInstance().handleWebUrl(mFragment, url);
}
return true;
}
在一打开web页面时就要设置上链接
SharedPreferenceUtils.setCustomAppProfile(PreferenceKey.URL,"http://xxx.xxx.x.xxx:8848/xxx/home.html");