2020-10-27 WebView学习笔记+实际应用

前言

1、加载网页
2、加载URL(网络或本地assets文件夹下的html文件)
3、加载html代码
4、Native和JavaScript互相调用


加载网络URL

webview.loadUrl(“http://www.xxxxxx.cn”);

加载assets下的html文件

webview.loadUrl(“file:android_asset/test.html”);

加载html代码

webview.loadData(); 可能出现乱码
webview.loadDataWithBaseURL(); 基本不会出现乱码情况

网页的前进后退

webview.canGoBack()
	webview.goBack()
	webview.canGoForward()
	webview.goForward()
	webview.canGoBackOrForward(int steps) //是否可以返回或前进 +前,-后
	webview.GoBackOrForward(int steps) 

按下返回键,默认退出当前Acitivity,如果希望是WebView内页后退

public boolen onKeyDown(int keyCode,keyEvent event){
	if((keyCode == keyEvent.KEYCODE_BACK)&&webview.canGoBack()){
		webView.goBack();
		return true;
	}
	return super.onKeyDown(keyCode,event);
}

代码演示:

1、默认打开https://m.baidu.com
2、在本地浏览器运行不跳转谷歌
3、返回按钮不直接返回整个Activity

private WebView mWvmain;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_web_view);
        mWvmain = findViewById(R.id.wv);

        //加载本地html
        // mWvmain.loadUrl("file:android_asset/test.html");

        //加载网络URL
        mWvmain.getSettings().setJavaScriptEnabled(true);//支持js
        mWvmain.setWebViewClient(new MyWebViewClient());//监听+重定向
        mWvmain.setWebChromeClient(new MyWebChromeClient());//例如进度条和titile...
        //mWvmain.addJavascriptInterface();
        mWvmain.loadUrl("https://m.baidu.com");
        }

        class MyWebViewClient extends WebViewClient {
            @Override
            public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
                view.loadUrl(request.getUrl().toString());
                return true;
            }

            @Override
            public void onPageStarted(WebView view, String url, Bitmap favicon) {
                super.onPageStarted(view, url, favicon);
                Log.d("WebView","onPageStarted");
            }

            @Override
            public void onPageFinished(WebView view, String url) {
                super.onPageFinished(view, url);
                Log.d("WebView","onPageFinished");
                //mWvmain.loadUrl("javascript:alert('hello')");
                mWvmain.evaluateJavascript("javascript:alert('hello')",null);
            }
        }

     class  MyWebChromeClient extends WebChromeClient{
         @Override
         public void onProgressChanged(WebView view, int newProgress) {
             super.onProgressChanged(view, newProgress);
         }

         @Override
         public void onReceivedTitle(WebView view, String title) {
             super.onReceivedTitle(view, title);
             setTitle(title);
         }
     }

    @Override
    //在网页中后退,重写keycode方法,正常返回退出activity此方法返回上一个页面
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_BACK && mWvmain.canGoBack()){
            mWvmain.goBack();
            return true;
        }

        return super.onKeyDown(keyCode, event);
    }

注意:

1、当使用webview加载网页时遇到网页加载出错,出现NET::ERR_CACHE_MISS的错误,解决方法只需要在你工程的AndroidManifest.xml文件中加入联网的权限

 <uses-permission android:name="android.permission.INTERNET"></uses-permission>

2、当使用webview加载网页时重定向不显示页面可能是需要js支持
代码如下:mWvmain.getSettings().setJavaScriptEnabled(true);

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值