Java手机号码工具类示例详解(判断运营商、获取归属地)
时间:2022-11-07 09:38:59|栏目:JAVA代码|点击: 次
所需引用Jar包
<dependency> <groupId>com.googlecode.libphonenumber</groupId> <artifactId>geocoder</artifactId> <version>2.15</version> </dependency> <dependency> <groupId>com.googlecode.libphonenumber</groupId> <artifactId>libphonenumber</artifactId> <version>6.3</version> </dependency> <dependency> <groupId>com.googlecode.libphonenumber</groupId> <artifactId>prefixmapper</artifactId> <version>2.15</version> </dependency> <dependency> <groupId>com.googlecode.libphonenumber</groupId> <artifactId>carrier</artifactId> <version>1.5</version> </dependency>
工具类源码
import java.util.Locale; import com.google.i18n.phonenumbers.PhoneNumberToCarrierMapper; import com.google.i18n.phonenumbers.PhoneNumberUtil; import com.google.i18n.phonenumbers.Phonenumber.PhoneNumber; import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder; /** * * @ClassName: PhoneUtil * @Description:手机号码归属地工具类 */ public class PhoneUtil { private static PhoneNumberUtil phoneNumberUtil = PhoneNumberUtil.getInstance(); private static PhoneNumberToCarrierMapper carrierMapper = PhoneNumberToCarrierMapper.getInstance(); private static PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance(); /** * 根据国家代码和手机号 判断手机号是否有效 * @param phoneNumber * @param countryCode * @return */ public static boolean checkPhoneNumber(String phoneNumber, String countryCode){ int ccode = StringUtils.obj2Int(countryCode); long phone = StringUtils.toLong(phoneNumber); PhoneNumber pn = new PhoneNumber(); pn.setCountryCode(ccode); pn.setNationalNumber(phone); return phoneNumberUtil.isValidNumber(pn); } * 根据国家代码和手机号 判断手机运营商 public static String getCarrier(String phoneNumber, String countryCode){ //返回结果只有英文,自己转成成中文 String carrierEn = carrierMapper.getNameForNumber(pn, Locale.ENGLISH); String carrierZh = ""; carrierZh += geocoder.getDescriptionForNumber(pn, Locale.CHINESE); switch (carrierEn) { case "China Mobile": carrierZh += "移动"; break; case "China Unicom": carrierZh += "联通"; case "China Telecom": carrierZh += "电信"; default: } return carrierZh; * * @Description: 根据国家代码和手机号 手机归属地 * @param @param phoneNumber * @param @param countryCode * @param @return 参数 * @throws public static String getGeo(String phoneNumber, String countryCode){ return geocoder.getDescriptionForNumber(pn, Locale.CHINESE); * @Title: getPhoneRegionCode * @Description: 得到手机的归宿地编码 * @return String 返回类型 * @throws public static String getPhoneRegionCode(String phoneNumber, String countryCode){ String areaName=getGeo(phoneNumber,countryCode); if(StringUtils.isEmpty(areaName)){ return ""; } if(areaName.length()<3){ return areaName; public static void main(String[] args) { System.out.println(getPhoneRegionCode("18931234689","86")); }