java 手机号归属地查询

来源:互联网 发布:独立级轻型航母数据 编辑:程序博客网 时间:2024/04/30 11:24

根据手机号码查询归属地、运营商我们引用google的libphonenumber包,libphonenumber是用于解析、格式化、存储和校验电话号码的Java、C++或JavaScript类库。

依赖jar包:com.googlecode.libphonenumber(Libphonenumber、Geocoder、Prefixmapper、Carrier)

jar包下载地址:http://mvnrepository.com/search?q=libphonenumber(我们也可以使用maven配置)

package com.yuanzubao.common.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;/** * 手机号归属地查询 * 依赖jar包:com.googlecode.libphonenumber(Libphonenumber、Geocoder、Prefixmapper、Carrier) * 开发者:wangql * 开发时间:2015-11-24 * */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 = Integer.valueOf(countryCode);        long phone = Long.valueOf(phoneNumber);        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 = Integer.valueOf(countryCode);        long phone = Long.valueOf(phoneNumber);        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 = Integer.valueOf(countryCode);        long phone = Long.valueOf(phoneNumber);                PhoneNumber pn = new PhoneNumber();        pn.setCountryCode(ccode);        pn.setNationalNumber(phone);        return geocoder.getDescriptionForNumber(pn, Locale.CHINESE);    }}

注:countryCode是国家代码,大陆的编号是86

0 0
原创粉丝点击