当前位置: 首页 > java >正文

Andorid 使用 libphonenumber-android 获取国际电话区号

参考 https://github.com/MichaelRocks/libphonenumber-android.git ,

它是 Google 的 libphonenumber 库的 Android 移植版。

可用于解析、格式化电话号码,并获取国家区号(Country Calling Code)

开始使用。
加入依赖,在 app 的 build.gradle 添加

dependencies {// libphonenumberimplementation 'io.michaelrocks:libphonenumber-android:8.13.35'
}

简单使用示例 ,得到 CN(+86) 、US(+1) 形式的数组

import android.content.Context;
import android.util.Log;import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.Set;import io.michaelrocks.libphonenumber.android.PhoneNumberUtil;public class LibPhoneNumberUtil {public static final String TAG = LibPhoneNumberUtil.class.getSimpleName();private final static boolean DEBUG = true;private static final String[] defaultArr = { "US(+1)" };/*** 获取区域和区号 , CN(+86) 形式的数组*/public static String[] getStandardArray(Context context){PhoneNumberUtil util = PhoneNumberUtil.createInstance(context); // 1Set<String> regions = util.getSupportedRegions(); // 2if (DEBUG) Log.d(TAG , "regions : " + regions);if(regions.size() == 0){return defaultArr;}String[] arr = regions.toArray(new String[0]);if (DEBUG) Log.d(TAG , "arr.length : " + arr.length);if (DEBUG) Log.d(TAG , "arr : " + Arrays.deepToString(arr));Arrays.sort(arr);if (DEBUG) Log.d(TAG , "sort arr : " + Arrays.deepToString(arr));List<String> myList = new ArrayList<>();for (String region : arr) {int cCode = util.getCountryCodeForRegion(region); // 3//if (DEBUG) Log.d(TAG, "region : " + region + " , cCode : " + cCode);myList.add(region + "(+" + cCode + ")");}if (myList.size() > 0){String[] arrLi  = myList.toArray(new String[0]);if (DEBUG) Log.d(TAG , "arrLi : " + Arrays.deepToString(arrLi));return arrLi;}return defaultArr;}

运行结果

regions : [PR, PS, PT, PW, PY, QA, AC, AD, AE, AF, AG, AI, AL, AM, AO, AR, AS, AT, RE, AU, AW, AX, AZ, RO, BA, BB, RS, BD, RU, BE, BF, RW, BG, BH, BI, BJ, BL, BM, BN, BO, SA, BQ, SB, BR, SC, BS, SD, SE, BT, SG, BW, SH, SI, SJ, BY, SK, BZ, SL, SM, SN, SO, CA, SR, CC, SS, ST, CD, CF, SV, CG, SX, CH, CI, SY, SZ, CK, CL, CM, CN, CO, TA, TC, CR, TD, CU, TG, CV, TH, CW, CX, CY, TJ, TK, CZ, TL, TM, TN, TO, TR, TT, DE, TV, TW, DJ, TZ, DK, DM, DO, UA, UG, DZ, US, EC, EE, EG, EH, UY, UZ, VA, VC, ER, ES, VE, ET, VG, VI, VN, VU, FI, FJ, FK, FM, FO, FR, WF, GA, GB, WS, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GT, GU, GW, GY, XK, HK, HN, HR, YE, HT, HU, ID, YT, IE, IL, IM, IN, IO, ZA, IQ, IR, IS, IT, ZM, JE, ZW, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MF, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM]
arr.length : 245
arr : [PR, PS, PT, PW, PY, QA, AC, AD, AE, AF, AG, AI, AL, AM, AO, AR, AS, AT, RE, AU, AW, AX, AZ, RO, BA, BB, RS, BD, RU, BE, BF, RW, BG, BH, BI, BJ, BL, BM, BN, BO, SA, BQ, SB, BR, SC, BS, SD, SE, BT, SG, BW, SH, SI, SJ, BY, SK, BZ, SL, SM, SN, SO, CA, SR, CC, SS, ST, CD, CF, SV, CG, SX, CH, CI, SY, SZ, CK, CL, CM, CN, CO, TA, TC, CR, TD, CU, TG, CV, TH, CW, CX, CY, TJ, TK, CZ, TL, TM, TN, TO, TR, TT, DE, TV, TW, DJ, TZ, DK, DM, DO, UA, UG, DZ, US, EC, EE, EG, EH, UY, UZ, VA, VC, ER, ES, VE, ET, VG, VI, VN, VU, FI, FJ, FK, FM, FO, FR, WF, GA, GB, WS, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GT, GU, GW, GY, XK, HK, HN, HR, YE, HT, HU, ID, YT, IE, IL, IM, IN, IO, ZA, IQ, IR, IS, IT, ZM, JE, ZW, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MF, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM]
sort arr : [AC, AD, AE, AF, AG, AI, AL, AM, AO, AR, AS, AT, AU, AW, AX, AZ, BA, BB, BD, BE, BF, BG, BH, BI, BJ, BL, BM, BN, BO, BQ, BR, BS, BT, BW, BY, BZ, CA, CC, CD, CF, CG, CH, CI, CK, CL, CM, CN, CO, CR, CU, CV, CW, CX, CY, CZ, DE, DJ, DK, DM, DO, DZ, EC, EE, EG, EH, ER, ES, ET, FI, FJ, FK, FM, FO, FR, GA, GB, GD, GE, GF, GG, GH, GI, GL, GM, GN, GP, GQ, GR, GT, GU, GW, GY, HK, HN, HR, HT, HU, ID, IE, IL, IM, IN, IO, IQ, IR, IS, IT, JE, JM, JO, JP, KE, KG, KH, KI, KM, KN, KP, KR, KW, KY, KZ, LA, LB, LC, LI, LK, LR, LS, LT, LU, LV, LY, MA, MC, MD, ME, MF, MG, MH, MK, ML, MM, MN, MO, MP, MQ, MR, MS, MT, MU, MV, MW, MX, MY, MZ, NA, NC, NE, NF, NG, NI, NL, NO, NP, NR, NU, NZ, OM, PA, PE, PF, PG, PH, PK, PL, PM, PR, PS, PT, PW, PY, QA, RE, RO, RS, RU, RW, SA, SB, SC, SD, SE, SG, SH, SI, SJ, SK, SL, SM, SN, SO, SR, SS, ST, SV, SX, SY, SZ, TA, TC, TD, TG, TH, TJ, TK, TL, TM, TN, TO, TR, TT, TV, TW, TZ, UA, UG, US, UY, UZ, VA, VC, VE, VG, VI, VN, VU, WF, WS, XK, YE, YT, ZA, ZM, ZW]
arrLi : [AC(+247), AD(+376), AE(+971), AF(+93), AG(+1), AI(+1), AL(+355), AM(+374), AO(+244), AR(+54), AS(+1), AT(+43), AU(+61), AW(+297), AX(+358), AZ(+994), BA(+387), BB(+1), BD(+880), BE(+32), BF(+226), BG(+359), BH(+973), BI(+257), BJ(+229), BL(+590), BM(+1), BN(+673), BO(+591), BQ(+599), BR(+55), BS(+1), BT(+975), BW(+267), BY(+375), BZ(+501), CA(+1), CC(+61), CD(+243), CF(+236), CG(+242), CH(+41), CI(+225), CK(+682), CL(+56), CM(+237), CN(+86), CO(+57), CR(+506), CU(+53), CV(+238), CW(+599), CX(+61), CY(+357), CZ(+420), DE(+49), DJ(+253), DK(+45), DM(+1), DO(+1), DZ(+213), EC(+593), EE(+372), EG(+20), EH(+212), ER(+291), ES(+34), ET(+251), FI(+358), FJ(+679), FK(+500), FM(+691), FO(+298), FR(+33), GA(+241), GB(+44), GD(+1), GE(+995), GF(+594), GG(+44), GH(+233), GI(+350), GL(+299), GM(+220), GN(+224), GP(+590), GQ(+240), GR(+30), GT(+502), GU(+1), GW(+245), GY(+592), HK(+852), HN(+504), HR(+385), HT(+509), HU(+36), ID(+62), IE(+353), IL(+972), IM(+44), IN(+91), IO(+246), IQ(+964), IR(+98), IS(+354), IT(+39), JE(+44), JM(+1), JO(+962), JP(+81), KE(+254), KG(+996), KH(+855), KI(+686), KM(+269), KN(+1), KP(+850), KR(+82), KW(+965), KY(+1), KZ(+7), LA(+856), LB(+961), LC(+1), LI(+423), LK(+94), LR(+231), LS(+266), LT(+370), LU(+352), LV(+371), LY(+218), MA(+212), MC(+377), MD(+373), ME(+382), MF(+590), MG(+261), MH(+692), MK(+389), ML(+223), MM(+95), MN(+976), MO(+853), MP(+1), MQ(+596), MR(+222), MS(+1), MT(+356), MU(+230), MV(+960), MW(+265), MX(+52), MY(+60), MZ(+258), NA(+264), NC(+687), NE(+227), NF(+672), NG(+234), NI(+505), NL(+31), NO(+47), NP(+977), NR(+674), NU(+683), NZ(+64), OM(+968), PA(+507), PE(+51), PF(+689), PG(+675), PH(+63), PK(+92), PL(+48), PM(+508), PR(+1), PS(+970), PT(+351), PW(+680), PY(+595), QA(+974), RE(+262), RO(+40), RS(+381), RU(+7), RW(+250), SA(+966), SB(+677), SC(+248), SD(+249), SE(+46), SG(+65), SH(+290), SI(+386), SJ(+47), SK(+421), SL(+232), SM(+378), SN(+221), SO(+252), SR(+597), SS(+211), ST(+239), SV(+503), SX(+1), SY(+963), SZ(+268), TA(+290), TC(+1), TD(+235), TG(+228), TH(+66), TJ(+992), TK(+690), TL(+670), TM(+993), TN(+216), TO(+676), TR(+90), TT(+1), TV(+688), TW(+886), TZ(+255), UA(+380), UG(+256), US(+1), UY(+598), UZ(+998), VA(+39), VC(+1), VE(+58), VG(+1), VI(+1), VN(+84), VU(+678), WF(+681), WS(+685), XK(+383), YE(+967), YT(+262), ZA(+27), ZM(+260), ZW(+263)]

createInstance

  • 注释1:PhoneNumberUtil.createInstance(context) 初始化。

getSupportedRegions

  • 注释2 :getSupportedRegions() 获取支持的国家、地区。
  /*** Returns all regions the library has metadata for.** @return  an unordered set of the two-letter region codes for every geographical region the*     library supports*/public Set<String> getSupportedRegions() {return Collections.unmodifiableSet(supportedRegions);}

getCountryCodeForRegion

  • 注释3 :getCountryCodeForRegion(String regionCode) ,根据国家、地区获取到对应的区号。
  /*** Returns the country calling code for a specific region. For example, this would be 1 for the* United States, and 64 for New Zealand.** @param regionCode  the region that we want to get the country calling code for* @return  the country calling code for the region denoted by regionCode*/public int getCountryCodeForRegion(String regionCode) {if (!isValidRegionCode(regionCode)) {logger.log(Level.WARNING,"Invalid or missing region code ("+ ((regionCode == null) ? "null" : regionCode)+ ") provided.");return 0;}return getCountryCodeForValidRegion(regionCode);}

parse

还可以通过给定的号码获取区号,

	try {PhoneNumberUtil util = PhoneNumberUtil.createInstance(context); Phonenumber.PhoneNumber phoneNumber = util.parse("+8610086", null);int code = phoneNumber.getCountryCode();Log.d("luoah" , "[MainActivity] -- testCountryPhoneList -- code : " + code);} catch (NumberParseException e) {throw new RuntimeException(e);}

示例的运行结果是 86

http://www.xdnf.cn/news/250.html

相关文章:

  • 线上健身预约小程序源码介绍
  • CSS 包含块
  • 动手学深度学习:手语视频在NiN模型中的测试
  • C++——C++11常用语法总结
  • 嵌入式面试常见算法题解析:数组元素移动与二分查找
  • 在 Vue 3 项目中引入 js-cookie 库
  • 打造一个 AI 面试助手:输入岗位 + 技术栈 → 自动生成面试问题 + 标准答案 + 技术考点图谱
  • 2025年03月中国电子学会青少年软件编程(Python)等级考试试卷(五级)真题
  • vue3学习笔记之属性绑定
  • 适合制作电磁铁的材料及特性
  • STL简介 + string【上】
  • 图像篡改检测算法
  • 【MATLAB代码例程】AOA与TOA结合的高精度平面地位,适用于四个基站的情况,附完整的代码
  • 万字解析TCP
  • 一次制作参考网杂志的阅读书源的实操经验总结(附书源)
  • 【无人机】电子速度控制器 (ESC) 驱动电机,常见的电调协议,PWM协议,Oneshot协议,DShot协议
  • Linux 网络接口 /sys/class/net/eth0 文件详解
  • 力扣面试150题--两数之和 和 快乐数
  • Java 2025:解锁未来5大技术趋势,Kotlin融合AI新篇
  • Server - 优雅的配置服务器 Bash 环境(.bashrc)
  • 无人机在农业中的应用与挑战!
  • 华为Pura X如何编辑图片、调整色调?图片编辑技巧、软件分享
  • git 出现 port 443 Connection timed out
  • 复现SCI图像增强(Toward fast, flexible, and robust low-light image enhancement.)
  • 【mysql】mysql疑难问题:实际场景解释什么是排它锁 当前读 快照读
  • YOLOv11改进:基于小波卷积WTConv的大感受野目标检测网络-
  • 使用 vcpkg 构建支持 HTTPS 的 libcurl 并解决常见链接错误
  • Java反射机制深度解析与应用案例
  • 第18周:对于ResNeXt-50算法的思考
  • Crawl4AI:重塑大语言模型数据供给的开源革命者