Android笔记(一):使用WebView

来源:互联网 发布:mac系统更新安装失败 编辑:程序博客网 时间:2024/05/21 12:51

很多时候,我们需要在app中打开网页,或者直接将某个网页封装成app,其实实现起来很容易,我们只需要使用WebView就可以做到了。

完整项目地址:https://github.com/KMKNKK/WebView_text
项目DSDN下载地址:http://download.csdn.net/download/qq_36113598/10011066

首先,声明在xml文件里部署webview,然后在java文件里声明webview;

接着,初始化websetting,使webview满足某些需求,以打开各种网页:

  private void initView() {        WebSettings setting = mWebView.getSettings();        setting.setJavaScriptEnabled(true);//支持Js        setting.setCacheMode(WebSettings.LOAD_DEFAULT);//缓存模式        setting.setBuiltInZoomControls(true);        //是否支持画面缩放,默认不支持        setting.setSupportZoom(true);        //是否显示缩放图标,默认显示        setting.setDisplayZoomControls(false);        //设置网页内容自适应屏幕大小                      setting.setLayoutAlgorithm(WebSettings.LayoutAlgorithm.SINGLE_COLUMN);        setting.setUseWideViewPort(true);        setting.setLoadWithOverviewMode(true);        setting.setJavaScriptCanOpenWindowsAutomatically(true);        //设置js可以直接打开窗口,如window.open(),默认为false        setting.setSupportZoom(true);         //是否可以缩放,默认true        setting.setBuiltInZoomControls(true);         //是否显示缩放按钮,默认false        setting.setUseWideViewPort(true);         //设置此属性,可任意比例缩放。大视图模式        setting.setLoadWithOverviewMode(true);         //和setUseWideViewPort(true)一起解决网页自适应问题        setting.setAppCacheEnabled(true);         //是否使用缓存        setting.setDomStorageEnabled(true);         //DOM Storage        //displayWebview.getSettings().setUserAgentString("User-Agent:Android");         //设置用户代理,一般不用    }

这里我将初始化封装成一个函数,在webview声明语句后面调用就好了。

接着,设置网页加载规则:

mWebView.setWebViewClient(new WebViewClient() {          @Override          public boolean shouldOverrideUrlLoading(WebView view, String url)           {                if(url == null) return false;                try {                   if (url.startsWith("http:") || url.startsWith("https:"))                    {                        view.loadUrl(url);                        return true;                    }                    else                    {            Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse(url));                        startActivity(intent);                        return true;                    }                } catch (Exception e) {       //防止crash (如果手机上没有安装处理某个scheme开头的url的APP, 会导致crash)                    return false;                }            }        });

由于webview只能识别http、https开头的网页,所以如果打开不是这两个开头的网址会出现:加载网页出现(“找不到网页net:err_unknown_url_scheme”)的错误,所以要在shouldOverrideUrlLoading里写入不是http、https开头的网址的解决办法。