关于使用webview的一些记录
最近在使用webview加载本地的html,js,css等,以前没用过webview,所以做的过程中出了很多浅显的错误,以此文章,记录一些,好记性不如乱笔头。
1.使用setWebViewClient中的重写函数:shouldOverrideUrlLoading(),此方法的目的是判断新网页的打开方法,当一个新的地址在页面发起是,由app自行决定是在手机浏览器打开还是在webview打开,系统默认返回false的,就是跳转到手机浏览器。返回true,则不触发后继续转到手机浏览器的操作,并同时需要开发者再次调用loadurl方法,继续在webview上显示。`
content.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 设置点击网页里面的链接还是在当前的webview里跳转
// shouldoverrideurlloading返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边
//当返回true时,你点任何链接都是失效的,需要你自己跳转。return false时webview会自己跳转。
view.loadUrl(url);
return true;
}`
2。使用onJsAlert()方法是,会遇到只调用一次的情况,使用result.cancel或者confirm即可解决
@Override
public boolean onJsAlert(WebView view, String url, String message,
JsResult result) {
dialogStyle=1;
createAffirmDialog(message);
result.confirm();
// return super.onJsAlert(view, url, message, result);
return true;
}
关于这里返回true还是false我现在还不知道有啥区别,希望知道的可以和我说下。关于具体使用参考http://gundumw100.iteye.com/blog/1158719。
3.android中webview控件实现拍照以及相册上传图片,网上的文章很多,我参考网上的,http://blog.csdn.net/zhoudailiang/article/details/50999708这篇文章写的很好,代码清晰。
4.关于webview返回代码如下:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK && content.canGoBack()) {
content.goBack();// 返回前一个页面
return true;
}
return super.onKeyDown(keyCode, event);
}
@Override
public void goBack(View v) {
switch (v.getId()) {
case R.id.head_left_tv:
if (content.canGoBack()) {
content.goBack();
} else {
mContext.finish();
}
break;
case R.id.head_close_tv:
mContext.finish();
break;
default:
break;
}
}
content为webview对象。