很多时候,我们需要在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开头的网址的解决办法。