android 根据区号判断手机号码是否符合格式
来源:互联网 发布:华东师范大学网络登录 编辑:程序博客网 时间:2024/05/16 14:58
在Android项目开发中,在注册或者其他需要手机号码的地方,经常需要校验手机号码的有效性,那么我们如何判断手机号码的有效性呢,当然首先想到的是根据正则表达式来判断,不过不同国家的手机号码的长度不一样,同时我们要根据区号来判断是否该号码符合该区号,那么我们可以怎么做呢?下面提供一个我在项目中用到的方法。
首先,导入这个jar包。
http://pan.baidu.com/s/1kUKRayr
其次,在你的android studio的values/arrays.xml中插入这个国家区号和国家简称对应的数组:
然后,现在,比如我们输入了一个手机号,区号CountryCode="+86", phoneNumber="15813849762" ,那么我们如何判断该手机号是否符合格式呢?
第一步: 根据这个CountryCode获取对应的国家简称,可以用以下这个方法,遍历以上的数组,得到国家的简称;
String countryCode =getPhoneCountryCode(CountryCode.replace("+", ""), getResources().getStringArray(R.array.CountryCodes))[1];得到的countryCode 指得是国家简称
/** * * @param phone :不带"+"号的区号.例如:86 * @param countryCodes :values/arrays中存储的区号数组 * @return :String[0]:当前传入的区号,string[1]:当前区号对应的国家简称 */public static String[] getPhoneCountryCode(String phone, String[] countryCodes) { String[] countryCode = new String[2]; countryCode[0] = ""; countryCode[1] = ""; for (int i = 0; i < countryCodes.length; i++) { try{ if(countryCodes[i].split(",")[0].toString().equals(phone)){ countryCode[0] = countryCodes[i].split(",")[0]; //得到区号 countryCode[1] = countryCodes[i].split(",")[1]; //得到区号对应的国家简称 break; } }catch (Exception e){e.printStackTrace(); } } return countryCode;}第二步: 调用我们在上面导入的库来帮助我们判断该手机号码的有效性
boolean isValid=isPhoneNumberValid(phoneNumber, countryCode );
/** * 根据区号判断是否是正确的电话号码 * @param phoneNumber :不带区号的电话号码 * @param countryCode :国家简称 return :true 合法 false:不合法 */public static boolean isPhoneNumberValid(String phoneNumber, String countryCode){ System.out.println("isPhoneNumberValid: "+phoneNumber+"/"+countryCode); //NOTE: This should probably be a member variable. PhoneNumberUtil phoneUtil = PhoneNumberUtil.getInstance(); try { Phonenumber.PhoneNumber numberProto = phoneUtil.parse(phoneNumber, countryCode); return phoneUtil.isValidNumber(numberProto); } catch (NumberParseException e) { System.err.println("NumberParseException was thrown: " + e.toString()); } return false;}it's over .
另外,我们可以通过TelephonyManager.getSimCountryIso()来获取手机电话卡所代表的国家区号简称,然后和以上该数组匹配得到实际的区号即可,不过由于手机系统的权限和安全问题,所以并不是所有手机都能获取到SIM卡的区号。
/** * 直接输出电话卡的区号 * @param context * @return */public static String getCountryZipCode(Context context){ String CountryID=""; String CountryZipCode=""; TelephonyManager manager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); //getNetworkCountryIso CountryID= manager.getSimCountryIso().toUpperCase(); String[] rl=context.getResources().getStringArray(R.array.CountryCodes); for(int i=0;i<rl.length;i++){ String[] g=rl[i].split(","); if(g[1].trim().equals(CountryID.trim())){ CountryZipCode=g[0]; break; } } return CountryZipCode;}
0 0
- android 根据区号判断手机号码是否符合格式
- 判断手机号码是否符合规则
- 判断手机号码是否符合规则
- android 判断手机号码格式
- 判断是否符合 USD 格式
- 判断是否符合指定格式
- 判断手机号码格式、身份证号码格式是否正确
- 如何判断手机号码格式是否正确
- 判断字符串是否符合时间格式
- 判断字符串是否符合邮箱格式
- iOS判断字符串是否符合格式要求
- 45、判断是否符合USD格式-JavaScript
- 44、判断是否符合指定格式
- 计蒜客-判断日期是否符合格式
- java android判断是否为手机号码
- Android 判断是否为手机号码的方法
- Android 判断是否为手机号码的方法
- Android正则表达式判断手机号码的格式
- Android:Layout_weight的深刻理解
- java mongo的基本操作
- angularJS 内置计算器
- symbol(s) not found for architecture arm64解决办法
- APKtool使用问题解答
- android 根据区号判断手机号码是否符合格式
- linux设备驱动归纳总结(十):1.udev&misc
- 第八周 oj训练 求值
- linux设备驱动归纳总结(十一):简单的看门狗驱动
- java中的缓存技术
- 工作总结
- bitbucket新增个人ssh公钥
- 打开新窗口的几种方式及指定窗口打开
- 【Java每日一题】20161028