1.布局就不说了,就一个简单的WebView,主要是java代码:
WebView wView = (WebView)findViewById(R.id.wv1);
WebSettings wSet = wView.getSettings();
wSet.setJavaScriptEnabled(true);
//wView.loadUrl("file:///android_asset/index.html"); //加载本地html文件
//wView.loadUrl("content://com.android.htmlfileprovider/sdcard/index.html");//加载本地sd卡内的index.html文件
wView.loadUrl("http://wap.baidu.com"); //加载指定的url地址
这是简单的加载html文件,不做其他操作。
2.监听webview,针对不同的情况调用不同的回调
首先是对webview进行设置
WebSettings settings = mWebView.getSettings();
// 设置与Js交互的权限
settings.setJavaScriptEnabled(true);
// 设置允许JS弹窗
settings.setJavaScriptCanOpenWindowsAutomatically(true);
//设置开启缓存
//settings.setAppCacheEnabled(false);
//启用数据库存储
settings.setDatabaseEnabled(true);
//启用文档对象数据存储
settings.setDomStorageEnabled(true);
//设置图片最后加载
settings.setRenderPriority(WebSettings.RenderPriority.HIGH);
//设置加载进来的页面自适应手机屏幕
settings.setUseWideViewPort(true);
settings.setLoadWithOverviewMode(true);
//加载网页
meWebView.loadUrl(webURL);
//设置监听事件
//设置WebChromeClient类
meWebView.setWebChromeClient(new WebChromeClient() {
//获取网站标题
@Override
public void onReceivedTitle(WebView view, String title) {
}
//获取加载进度
@Override
public void onProgressChanged(WebView view, int newProgress) {
}
});
//设置WebViewClient类
meWebView.setWebViewClient(new WebViewClient() {
//设置不用系统浏览器打开,直接显示在当前Webview
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if (url.startsWith("alipays:") || url.startsWith("alipay")) {
try {
startActivity(new Intent("android.intent.action.VIEW", Uri.parse(url)));
} catch (Exception e) {
new AlertDialog.Builder(WebViewActivity.this)
.setMessage("未检测到支付宝客户端,请安装后重试。")
.setPositiveButton("立即安装", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
Uri alipayUrl = Uri.parse("https://d.alipay.com");
startActivity(new Intent("android.intent.action.VIEW", alipayUrl));
}
}).setNegativeButton("取消", null).show();
}
return true;
}
// ------- 处理结束 -------
if (!(url.startsWith("http") || url.startsWith("https"))) {
return true;
}
view.loadUrl(url);
return true;
}
//设置加载前的函数
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
Logger.i("WebView开始加载···");
}
//设置结束加载函数
@Override
public void onPageFinished(WebView view, String url) {
hideLoading();
Logger.i("WebView加载完成!");
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
super.onReceivedError(view, request, error);
hideLoading();
Logger.i("WebView加载失败!");
}
});
//设置返回键
meWebView.setOnKeyListener(new View.OnKeyListener() {
@Override
public boolean onKey(View v, int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && meWebView.canGoBack()) {
meWebView.goBack();
return true;
}
return false;
}
});
网友评论