1. 程式人生 > >手機號歸屬地 libphonenumber

手機號歸屬地 libphonenumber

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>