1.关键jar包
carrier-1.73.jar
geocoder-2.83.jar
libphonenumber-8.8.6.jar
prefixmapper-2.83.jar
2.jar更新地址
http://mvnrepository.com/artifact/com.googlecode.libphonenumber
jar包更新挺及时的,完全满足业务,总比淘宝买数据库实用。
3.demo
/**
* 判断手机号是否归属设定省份, 属于返回 true, 不属于 返回false
* @param phoneNum 手机号
* @param ascription 省份名称:山西
* @return
*/
public boolean isAvailablePhoneNumber(String phoneNum, String ascription){
boolean result = false;
if(phoneNum == null || phoneNum.equals("") || ascription == null || ascription.equals("")){
return result;
}
String referenceRegion = getReferenceRegion(phoneNum);
if(referenceRegion != null && referenceRegion.contains(ascription)){
result = true;
}
return result;
}
/**
* 判断手机号所属运营商
* @param phoneNum 手机号
* @return
*/
public String getCarrier(String phoneNum){
PhoneNumberToCarrierMapper carrierMapper = PhoneNumberToCarrierMapper.getInstance();
long phone = Long.valueOf(phoneNum);
PhoneNumber pn = new PhoneNumber();
pn.setCountryCode(86);
pn.setNationalNumber(phone);
String carrierZh = "";
String carrierEn = carrierMapper.getNameForNumber(pn, Locale.ENGLISH);
if(carrierEn.equals("China Mobile")){//移动
carrierZh = "1";
}else if(carrierEn.equals("China Unicom")){//联通
carrierZh = "2";
}else if(carrierEn.equals("China Telecom")){//电信
carrierZh = "3";
}
return carrierZh;
}
/**
* 获取手机号归属地
* @param phoneNum
* @return
*/
public String getReferenceRegion(String phoneNum){
PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance();
PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance();
String language = "CN";
PhoneNumber referencePhonenumber = null;
String referenceRegion = "";
try {
referencePhonenumber = phoneUtil.parse(phoneNum, language);
// 手机号码归属城市 referenceRegion
referenceRegion = geocoder.getDescriptionForNumber(referencePhonenumber, Locale.CHINA);
} catch (NumberParseException e) {
e.printStackTrace();
}
return referenceRegion;
}
希望能够帮助到你