执行逻辑处理。前进后退。过滤302跳转。
import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.os.Message;
import android.support.v4.view.ViewPager;
import android.util.Log;
import android.webkit.WebView;
import android.webkit.WebView.HitTestResult;
import android.webkit.WebViewClient;
@SuppressWarnings("unused")
public class CustomWebViewClient extends WebViewClient {
private Context mContext;
private ViewPager browViewPager;
private ViewPagerAdapter browViewPagerAdapter;
public CustomWebViewClient(Context mContext,ViewPager browViewPager,ViewPagerAdapter browViewPagerAdapter){
this.mContext=mContext;
this.browViewPager=browViewPager;
this.browViewPagerAdapter=browViewPagerAdapter;
}
public CustomWebViewClient(){
}
@Override
public void onPageFinished(WebView view, String url) {
super.onPageFinished(view, url);
}
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
super.onPageStarted(view, url, favicon);
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
HitTestResult hit = view.getHitTestResult();
int hitType = hit.getType();
if (hitType == HitTestResult.SRC_ANCHOR_TYPE) {// 点击超链接
// 这里执行自定义的操作
CustomWebView mCustomWebView = new CustomWebView(mContext);
CustomWebViewClient mCustomWebViewClient = new CustomWebViewClient(mContext, browViewPager, browViewPagerAdapter);
CustomWebChromeClient mCustomWebChromeClient = new CustomWebChromeClient();
mCustomWebView.setWebViewClient(mCustomWebViewClient);
mCustomWebView.setWebChromeClient(mCustomWebChromeClient);
if (browViewPager.getCurrentItem() < browViewPagerAdapter.getPageViews().size() - 1) {
for (int i = browViewPagerAdapter.getPageViews().size() - 1; i > browViewPager.getCurrentItem(); i--) {
browViewPagerAdapter.getPageViews().remove(i);
}
}
mCustomWebView.loadUrl(url);
browViewPagerAdapter.getPageViews().add(mCustomWebView);
browViewPagerAdapter.notifyDataSetChanged();
browViewPager.setCurrentItem(browViewPagerAdapter.getPageViews().size() - 1);
return true;// 返回true浏览器不再执行默认的操作
} else if (hitType == 0) {// 重定向时hitType为0
return false;// 不捕获302重定向
} else {
return false;
}
}
@Override
public void onFormResubmission(WebView view, Message dontResend,Message resend) {
resend.sendToTarget();
}
}