webView加载回调-setWebViewClient

时间:2025-04-17 13:21:26

1 设置

(new MyWebViewClient(webView));

2 自定义加载时的回调

/**
     * 自定义回调
     */
    class MyWebViewClient extends BridgeWebViewClient {

        public MyWebViewClient(BridgeWebView webView) {
            super(webView);
        }

        @Override
        public void onPageStarted(WebView view, String url, Bitmap favicon) {
            (view, url, favicon);
            //();
        }

        @Override
        public void onPageFinished(WebView view, String url) {
            ();
            addImageClickListner();
            ();
            if (ScrollY != 0) {
                (ScrollX, ScrollY);
            }

            //这个是一定要加上那个的,配合scrollView和WebView的height=wrap_content属性使用
            int w = (0,
                    );
            int h = (0,
                    );
            //重新测量
            (w, h);

            (view, url);
        }
    }

3 必须集成类

/**
 * 如果要自定义WebViewClient必须要集成此类
 * Created by bruce on 10/28/15.
 */
public class BridgeWebViewClient extends WebViewClient {
    private BridgeWebView webView;

    public BridgeWebViewClient(BridgeWebView webView) {
         = webView;
    }

    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        try {
            url = (url, "UTF-8");
        } catch (UnsupportedEncodingException e) {
            ();
        }

        if ((BridgeUtil.YY_RETURN_DATA)) { // 如果是返回数据
            (url);
            return true;
        } else if ((BridgeUtil.YY_OVERRIDE_SCHEMA)) { //
            ();
            return true;
        } else {
            return (view, url);
        }
    }

    // 增加shouldOverrideUrlLoading在api》=24时
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {

        if (.SDK_INT >= Build.VERSION_CODES.N) {
            String url = ().toString();
            try {
                url = (url, "UTF-8");
            } catch (UnsupportedEncodingException ex) {
                ();
            }
            if ((BridgeUtil.YY_RETURN_DATA)) { // 如果是返回数据
                (url);
                return true;
            } else if ((BridgeUtil.YY_OVERRIDE_SCHEMA)) { //
                ();
                return true;
            } else {
                return (view, request);
            }
        }else {
            return (view, request);
        }
    }

    @Override
    public void onPageStarted(WebView view, String url, Bitmap favicon) {
        (view, url, favicon);
    }

    @Override
    public void onPageFinished(WebView view, String url) {
        (view, url);

        if ( != null) {
            (view, );
        }

        //
        if (() != null) {
            for (Message m : ()) {
                (m);
            }
            (null);
        }
    }
}