JAVA根据手机号获取省份地区运营商

1.封装返回对象

/**** @Auther:pmh 879564936* @Version:1.0*/
public class PhoneModel {private String provinceName;//省份private String cityName;//城市private String carrier;//运营商public String getProvinceName() {return provinceName;}public void setProvinceName(String provinceName) {this.provinceName = provinceName;}public String getCityName() {return cityName;}public void setCityName(String cityName) {this.cityName = cityName;}public String getCarrier() {return carrier;}public void setCarrier(String carrier) {this.carrier = carrier;}
}

2.工具类


import com.google.i18n.phonenumbers.PhoneNumberToCarrierMapper;
import com.google.i18n.phonenumbers.Phonenumber;
import com.google.i18n.phonenumbers.geocoding.PhoneNumberOfflineGeocoder;
import java.util.Locale;public class PhoneNumberUtil {//找出直辖市private final static String[] MUNICIPALITY = { "北京市", "天津市", "上海市", "重庆市" };//找出自治区private final static String[] AUTONOMOUS_REGION = { "新疆", "内蒙古", "西藏","宁夏", "广西" };private static com.google.i18n.phonenumbers.PhoneNumberUtil phoneNumberUtil = com.google.i18n.phonenumbers.PhoneNumberUtil.getInstance();//提供与电话号码相关的运营商信息private static PhoneNumberToCarrierMapper carrierMapper = PhoneNumberToCarrierMapper.getInstance();// 提供与电话号码有关的地理信息private static PhoneNumberOfflineGeocoder geocoder = PhoneNumberOfflineGeocoder.getInstance();//中国大陆区号private final static int COUNTRY_CODE = 86;/*** 根据手机号 判断手机号是否有效* @param phoneNumber* @return true-有效 false-无效*/public static boolean checkPhoneNumber(String phoneNumber) {long phone = Long.parseLong(phoneNumber);Phonenumber.PhoneNumber pn = new Phonenumber.PhoneNumber();pn.setCountryCode(COUNTRY_CODE);pn.setNationalNumber(phone);return phoneNumberUtil.isValidNumber(pn);}/*** 根据手机号 判断手机运营商* @param phoneNumber*/public static String getCarrier(String phoneNumber) {long phone = Long.parseLong(phoneNumber);Phonenumber.PhoneNumber pn = new Phonenumber.PhoneNumber();pn.setCountryCode(COUNTRY_CODE);pn.setNationalNumber(phone);// 返回结果只有英文,自己转成成中文String carrierEn = carrierMapper.getNameForNumber(pn, Locale.ENGLISH);String carrierZh = "";switch (carrierEn) {case "China Mobile":carrierZh += "移动";break;case "China Unicom":carrierZh += "联通";break;case "China Telecom":carrierZh += "电信";break;default:break;}return carrierZh;}/*** 根据手机号 获取手机归属地*/public static String getGeo(String phoneNumber) {long phone = Long.parseLong(phoneNumber);Phonenumber.PhoneNumber pn = new Phonenumber.PhoneNumber();pn.setCountryCode(COUNTRY_CODE);pn.setNationalNumber(phone);return geocoder.getDescriptionForNumber(pn, Locale.CHINESE);}/*** 根据手机号 获取封裝信息*/public static PhoneModel getPhoneModel(String phoneNumber) {if (checkPhoneNumber(phoneNumber)) {String geo = getGeo(phoneNumber);PhoneModel phoneModel = new PhoneModel();String carrier = getCarrier(phoneNumber);phoneModel.setCarrier(carrier);// 直辖市for (String val : MUNICIPALITY) {if (geo.equals(val)) {phoneModel.setProvinceName(val.replace("市", ""));phoneModel.setCityName(val);return phoneModel;}}// 自治区for (String val : AUTONOMOUS_REGION) {if (geo.startsWith(val)) {phoneModel.setProvinceName(val);phoneModel.setCityName(geo.replace(val, ""));return phoneModel;}}// 其它String[] splitArr = geo.split("省");if (splitArr != null && splitArr.length == 2) {phoneModel.setProvinceName(splitArr[0]);phoneModel.setCityName(splitArr[1]);return phoneModel;}}return null;}
}

3.需要引入的pom配置

 <!--根据手机号查询地区 --><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><!--根据手机号查地区end-->

4.测试

 public static void main(String[] args) {PhoneModel phoneModel = PhoneNumberUtil.getPhoneModel("159XXXXXX");if (null != phoneModel) {   //可能会有空的情况System.out.println(phoneModel.getProvinceName() + "     " + phoneModel.getCityName());}}

JAVA根据手机号获取省份和地区相关推荐

  1. java查询城市区号,java根据手机号获取归属地

    引言 最近在做一个关于车新闻的项目,让弄个根据用户注册的手机号获取该用户手机号所在地区,刚刚听说感觉特别高大上,这也可以获得???于是就开始度娘..查了好多资料渐渐的明白了原理. 原理介绍 (1)先上 ...

  2. java根据手机号获取微信信息_Java实现的微信公众号获取微信用户信息示例

    本文实例讲述了Java实现的微信公众号获取微信用户信息.分享给大家供大家参考,具体如下: 注: 这里获取用户信息方式和网页授权获取用户信息方式不同.两个access_token不同,返回的结果也不同. ...

  3. JAVA采用手机号获取短信验证进行登录与注册

    /*** 用户注册发送短信*/@PostMapping("/sendMassage")@ApiOperationSupport(order = 12)@ApiOperation(v ...

  4. java通过手机号查询地区信息

    通过手机号查询省份城市. 有两种方式: 一,通过发送url请求获取信息.此方法在遍历手机号查询时效率很低. private String getProvinceName(String phoneNum ...

  5. Java获取国内各个地区实时天气

    获取国内各个地区实时天气 不废话直接上代码 public static String getWeatherData(String cityId) {long time = new Date().get ...

  6. java IP转换为国家省份城市

    日萌社 人工智能AI:Keras PyTorch MXNet TensorFlow PaddlePaddle 深度学习实战(不定时更新) 参考文章:https://blog.csdn.net/chws ...

  7. java解析XML获取城市代码

    运行前先导入dom4j架包,由于我们公司用的代理服务器所以下面我设置了代理ip,不需要的可直接忽略 package com.chengshidaima.tools;import java.io.Buf ...

  8. 通过ip获取所在地理位置、通过手机号获取归属地

    目录 准备工作 1.准备pom.xml 2.准备http工具类,类名是HttpUtils(自己找位置放置,只要能用到就可以了) 一.通过ip获取所在地址位置 方法一.使用http://whois.pc ...

  9. java根据IP获取当前区域天气信息

    java根据IP获取当前区域天气信息 大致思路是客户端发起请求,我们首先根据请求获取到外网IP,然后再根据外网IP获取到用户所在城市,最后根据城市获取到天气信息 获取外网IP 万网获取外网IP地址: ...

  10. 微信小程序:登录授权,根据手机号获取凭证,获取用户手机号

    1.微信小程序授权 controller 层代码 @Autowiredprivate WxUtils wxUtils;//小程序 授权@RequestMapping(value = "/wx ...

最新文章

  1. java程序运行结果题_(Java程序设计)试题
  2. 如何应对安全漏洞的修复
  3. 数据测试常用的 Data Profiling 方法
  4. c# 获取cad文档的路径_C# 打开以对话框,获取文件夹路径 、文件的路径、文件名...
  5. python crawler(2)
  6. leetcode 787. Cheapest Flights Within K Stops | 787. K 站中转内最便宜的航班(BFS)
  7. 实现才是目的——《大道至简》第六章读后感
  8. 我就是古董店的那个店小二……专司收藏……
  9. 视频编码会议_我在编码事件和会议上进行了16次技术演讲。 这是我学到的。
  10. Java 算法 素数分解
  11. 跨域验证cookie与缓存控制
  12. SpringCloud分布式开发五大神兽
  13. 表单设置 disabled 后无法传值到后台的解决办法
  14. CMOS 集成电路设计手册 (基础篇)--学习笔记 第二章
  15. java实现斐波那契数列的三种方法
  16. 第三届易观算法大赛 -- OLAP Session分析(5万奖金)
  17. linux虚拟化cpu的绑定,为虚拟机vCPU绑定物理CPU
  18. 三层锁机病毒的层层逆向剖析
  19. 通信中的MGF(矩生成函数)
  20. CAD中用lisp程序实现批量偏移_AutoCAD如何批量偏移

热门文章

  1. Tbase数据库入坑记
  2. 51单片机流水灯方法大全
  3. 主键外键超键候选键区别以及联系
  4. 桌面版linux装哪个版本好用,linux桌面版哪个版本好用?
  5. 计算机语言t和o,PLC编程语言/操作指令/使用步骤详解
  6. 电脑突然无法连接网络,如何处理(主要是针对QQ、微信可以登录,网页无法进入)
  7. python毕业设计总结范文大全_毕业论文设计总结范文.docx
  8. ShadowGun: Optimizing for Mobile Sample Level
  9. matlab 粒子群应用,粒子群算法程序应用
  10. Win10 安装rational rose 7教程