总结webView的使用

2019-03-01  本文已影响0人  MissPSTime

1.webViewClient

private WebViewClient webViewClient = new WebViewClient() {

    @Override

    public void onPageFinished(final WebView view, String url) {

        super.onPageFinished(view, url);

        //网页加载完毕做处理

       可以通过view.getTitle()获取title

    }

    @Override

    public void onPageStarted(WebView view, String url, Bitmap favicon) {

        L.e("web_view", "started: "+ url);

        super.onPageStarted(view, url, favicon);

    }

    //可以拦截到加载的url

    @Override

    public boolean shouldOverrideUrlLoading(WebView view, String url) {

        L.e("web_view", "loading: "+ url);

        //在这里可以对url进行一些处理,替换字段,新增参数等

        if(url!=null&&url.contains("getCoupon?couponId")){

            Intent  intent=new Intent();

           startActivity(intent);

            return  true;//代表拦截此链接,执行了跳转界面的操作,webView不会加载此链接

        }

        return super.shouldOverrideUrlLoading(view, url);

    }

};

2.返回按钮的处理,如果网页有上一层,先返回上一层

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

    if ((keyCode == KeyEvent.KEYCODE_BACK) && mWebView.canGoBack()) {

        mWebView.goBack(); //goBack()表示返回WebView的上一页面

        return true;

    }

    return super.onKeyDown(keyCode, event);

}

3.通过js进行交互(h5调用native)

private void initView() {

    WebSettings webSettings = getSettings();

    webSettings.setJavaScriptEnabled(true);//设置支持js

    //设置js调用的接口

    this.addJavascriptInterface(new AbsClientCallback(), "android");

}

public class AbsClientCallback {

//js调用native的回调

    @Keep

    @JavascriptInterface

    public String callBackNative(String type, String scheme) {

        return onCallBackNativeForH5(type, scheme);

    }

}

4.native通过js调用h5(约定好的函数)

mWebView.loadUrl("javascript:righthandleparam('android')");

5.对webView的设置setting全部设置上去就好,少设置的话可能会有一些不知名的问题

上一篇下一篇

猜你喜欢

热点阅读