手機號歸屬地 libphonenumber
阿新 • • 發佈:2019-01-28
libphonenumber是一個Google開發的Common Java類庫用於解析,格式化,儲存和校驗國際電話號碼。適合用於智慧手機上,同時還提供一個JavaScript移植。
舉一個例子
package com.lei.util;
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;
import com.okcoin.util.StringUtil;
/**
程式碼示例
StringUtil 為String工具類,並未提供,可執行更換。
可以使用String 原生函式替換
*/
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 = StringUtil.toInteger(countryCode);
long phone = StringUtil.toLong(phoneNumber, 0L);
PhoneNumber pn = new PhoneNumber();
pn.setCountryCode(ccode);
pn.setNationalNumber(phone);
return phoneNumberUtil.isValidNumber(pn);
}
/**
* 根據國家程式碼和手機號 判斷手機運營商
* @param phoneNumber
* @param countryCode
* @return
*/
public static String getCarrier(String phoneNumber, String countryCode){
int ccode = StringUtil.toInteger(countryCode);
long phone = StringUtil.toLong(phoneNumber, 0L);
PhoneNumber pn = new PhoneNumber();
pn.setCountryCode(ccode);
pn.setNationalNumber(phone);
//返回結果只有英文,自己轉成成中文
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 += "聯通";
break;
case "China Telecom":
carrierZh += "電信";
break;
default:
break;
}
return carrierZh;
}
/**
*
* @Description: 根據國家程式碼和手機號 手機歸屬地
* @date 2015-7-13 上午11:33:18
* @param @param phoneNumber
* @param @param countryCode
* @param @return 引數
* @throws
*/
public static String getGeo(String phoneNumber, String countryCode){
int ccode = StringUtil.toInteger(countryCode);
long phone = StringUtil.toLong(phoneNumber, 0L);
PhoneNumber pn = new PhoneNumber();
pn.setCountryCode(ccode);
pn.setNationalNumber(phone);
return geocoder.getDescriptionForNumber(pn, Locale.CHINESE);
}
public static void main(String[] args) {
System.out.println(PhoneUtil.getCarrier("159655555","86"));
}
}
MAVEN 地址
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>libphonenumber</artifactId>
<version>7.0</version>
</dependency>
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>carrier</artifactId>
<version>1.11</version>
</dependency>
<dependency>
<groupId>com.googlecode.libphonenumber</groupId>
<artifactId>geocoder</artifactId>
<version>2.12</version>
</dependency>