APP开发实战137-WebView功能设计
2016-08-28 20:31
501 查看
36.9 WebView功能设计
在使用WebView控件时,除了设置是否支持JS、缓存大小、缓存模式、文字编码类型、图片缩放和网页缩放等外,还需重写许多函数,具体如下:mWebView.setWebViewClient(newWebViewClient() {
@Override
public booleanshouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("http:") || url.startsWith("https:") ) {
return false;
}
//网页中如果有tel:、mailto:这样的链接,需要单独处理 taskUrl = url;
urlTask();
return true;
}
//在以下几个函数中,需要关闭加载提示框
@Override
public void onPageFinished(WebViewview, String url) {
super.onPageFinished(view,url);
UIHelper.dismiss(dialogFragment);
}
@Override
public void onReceivedError(WebViewview, int errorCode, String description, String failingUrl) {
super.onReceivedError(view,errorCode, description, failingUrl);
UIHelper.dismiss(dialogFragment);
//显示提示用户遇到错误,需要重新加载的网页
mWebView.loadUrl("file:///android_asset/error.html");
}
@Override
public voidonReceivedHttpError(WebView view, WebResourceRequest request,WebResourceResponse errorResponse) {
super.onReceivedHttpError(view,request, errorResponse);
UIHelper.dismiss(dialogFragment);
//显示提示用户遇到错误,需要重新加载的网页
mWebView.loadUrl("file:///android_asset/error.html");
}
});
}
//返回键处理
public boolean onKeyDown(int keyCode,KeyEvent event) {
if ((keyCode == KeyEvent.KEYCODE_BACK)&&
mWebView.canGoBack()){
mWebView.goBack(); //goBack()表示返回WebView的上一页面
return true;
}
return super.onKeyDown(keyCode, event);
}
publicvoid urlTask() {
if(taskUrl.startsWith("tel:")) {
//Android6.0系统需要动态申请权限
if(EasyPermissions.hasPermissions(this,
Manifest.permission.CALL_PHONE)){
// Have permission, do thething!
Intent intent = newIntent(Intent.ACTION_VIEW,
Uri.parse(taskUrl));
startActivity(intent);
} else {
// Ask for one permission
EasyPermissions.requestPermissions(this,
getString(R.string.rationale_call_phone),
RC_TEL_PERM,
Manifest.permission.CALL_PHONE);
}
} else {
Intent intent = newIntent(Intent.ACTION_VIEW,
Uri.parse(taskUrl));
startActivity(intent);
}
}
相关文章推荐
- APP开发实战136-APP常用功能设计
- APP开发实战55-实体类、辅助类和三方功能模块设计
- APP开发实战150-Android 提示功能设计(AlertDialog、Toast和Snackbar的使用)
- APP开发实战168-APP快捷图标的功能设计
- APP开发实战128-APP Log功能设计
- APP开发实战166-全屏模式的功能设计
- APP开发实战53-展现层设计(View)
- APP开发实战167-开机自启动的功能设计
- 实战使用Axure设计App,使用WebStorm开发(5) – 实现页面功能
- APP开发实战107-WebView缓存
- APP开发实战66-功能级别的BaseActivity设计
- 实战使用Axure设计App,使用WebStorm开发(5) – 实现页面功能
- APP开发实战134-APP版本更新功能设计
- WebApp开发实战视频教程
- 实战使用Axure设计App,使用WebStorm开发(1) – 用Axure描述需求
- 实战使用Axure设计App,使用WebStorm开发(4) – 实现页面UI
- Cordova webapp实战开发:(7)如何通过简单的方法做到,不重新发布APP来修复bug、增加功能、或者躲开苹果的一些严格审核?
- Cordova webapp实战开发:(3)后面可能会学到的东西
- 实战使用Axure设计App,使用WebStorm开发(2) – 创建 Ionic 项目
- 实战使用Axure设计App,使用WebStorm开发(3) – 构建页面架构