1.禁止网页长按弹出文字选择功能:
mWebView.setOnLongClickListener(new WebView.OnLongClickListener() {
@Override
public boolean onLongClick(View v) {
// TODO Auto-generated method stub
return true;
}
});
2.只有点击请求的是链接是才会调用,重写此方法返回true表明点击网页里面的链接还是在当前的webview里跳转,不跳到浏览器那边。(可重写此方法在跳转网页时修改其标题):
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
//设置页面新标题
String title = getTitle(url);
mTitleText.setText(title);
//加载页面
view.loadUrl(url);
return true;
}
3.在网页中处理按键事件:
@Override
public boolean shouldOverrideKeyEvent(WebView view, KeyEvent event) {
return super.shouldOverrideKeyEvent(view, event);
}
4.点击网页中电话号码或者手机进行拨打电话:
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.contains("tel:")) {
String phone = url.substring(url.indexOf(":") + 1);
SystemUtil.callPhone(WebViewActivity.this, phone);
return true;
}
return true;
}
/**
* 拨打电话
* @param context
* @param num
*/
public static void callPhone(Context context, String num) {
if(isPhoneNumberValid(num)) {
//点击数字后立即拨打
// Intent intent = new Intent(Intent.ACTION_CALL, Uri.parse("tel:" + num));
//点击数字后跳转到拨号盘
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:" + num));
context.startActivity(intent);
}
}
/**
* 验证电话号码或者手机号码
* @param phoneNumber
* @return
*/
public static boolean isPhoneNumberValid(String phoneNumber) {
boolean isValid = false;
String expression = "((^(13|15|18)[0-9]{9}$)|(^0[1,2]{1}\\d{1}-?\\d{8}$)|"
+ "(^0[3-9] {1}\\d{2}-?\\d{7,8}$)|(^0[1,2]{1}\\d{1}-?\\d{8}-(\\d{1,4})$)|"
+ "(^0[3-9]{1}\\d{2}-? \\d{7,8}-(\\d{1,4})$))";
CharSequence inputStr = phoneNumber;
Pattern pattern = Pattern.compile(expression);
Matcher matcher = pattern.matcher(inputStr);
if(matcher.matches()) {
isValid = true;
}
return isValid;
}