Android如何获取手机号码信息
手机号码不是所有的SIM卡都能获取。只是有一部分可以拿到。这个是由于移动运营商没有把手机号码的数据写入到SIM卡中,能够读取SIM卡号的话应该有前提,那就是SIM卡已经写入了本机号码,不然是无法读取的。具体的什么样的卡能获取到号码,要自己具体测试才可以,就算是同一个运营商同一个套餐的卡也会有差别。
直接附上代码,具体实现new一个PhoneInfoUtils对象,调用其方法即可。
public class PhoneInfoUtils { private static String TAG = "PhoneInfoUtils"; private TelephonyManager telephonyManager; //移动运营商编号 private String NetworkOperator; private Context context; public PhoneInfoUtils(Context context) { this.context = context; telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); } //获取sim卡iccid public String getIccid() { String iccid = "N/A"; iccid = telephonyManager.getSimSerialNumber(); return iccid; } //获取电话号码 public String getNativePhoneNumber() { String nativePhoneNumber = "N/A"; nativePhoneNumber = telephonyManager.getLine1Number(); return nativePhoneNumber; } //获取手机服务商信息 public String getProvidersName() { String providersName = "N/A"; NetworkOperator = telephonyManager.getNetworkOperator(); //IMSI号前面3位460是国家,紧接着后面2位00 02是中国移动,01是中国联通,03是中国电信。 //Flog.d(TAG,"NetworkOperator=" NetworkOperator); if (NetworkOperator.equals("46000") || NetworkOperator.equals("46002")) { providersName = "中国移动"; //中国移动 } else if(NetworkOperator.equals("46001")) { providersName = "中国联通"; //中国联通 } else if (NetworkOperator.equals("46003")) { providersName = "中国电信"; //中国电信 } return providersName; } public String getPhoneInfo() { TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); StringBuffer sb = new StringBuffer(); sb.append(" Line1Number = " tm.getLine1Number()); sb.append(" NetworkOperator = " tm.getNetworkOperator()); //移动运营商编号 sb.append(" NetworkOperatorName = " tm.getNetworkOperatorName()); //移动运营商名称 sb.append(" SimCountryIso = " tm.getSimCountryIso()); sb.append(" SimOperator = " tm.getSimOperator()); sb.append(" SimOperatorName = " tm.getSimOperatorName()); sb.append(" SimSerialNumber = " tm.getSimSerialNumber()); sb.append(" SubscriberId(IMSI) = " tm.getSubscriberId()); return sb.toString(); } }
楼主项目用的物联卡就是获取不到号码,然后就用了iccid,下面科普下iccid:
SIM卡正面或者背面总有那么几行数字和字母,20位的,这就是iccid。CCID:Integrate circuit card identity 集成电路卡识别码(固化在手机SIM卡中) ICCID为IC卡的唯一识别号码,共有20位数字组成,其编码格式为:XXXXXX 0MFSS YYGXX XXXXX。
前六位运营商代码:中国移动的为:898600;898602 ,中国联通的为:898601,中国电信898603。如果还想获取到更多的手机卡信息,可查看TelephonyManager的具体方法,这个就不在这里展开了。
若资源对你有帮助、浏览后有很大收获、不妨小额打赏我一下、你的鼓励是维持我不断写博客最大动力
想获取DD博客最新代码、你可以扫描下方的二维码、关注DD博客微信公众号(ddblogs)
或者你也可以关注我的新浪微博、了解DD博客的最新动态:DD博客官方微博(dwtedx的微博)
如对资源有任何疑问或觉得仍然有很大的改善空间、可以对该博文进行评论、希望不吝赐教
为保证及时回复、可以使用博客留言板给我留言: DD博客留言板(dwtedx的留言板)
感谢你的访问、祝你生活愉快、工作顺心、欢迎常来逛逛
以上就是关于“Android如何获取手机号码信息”的相关知识,感谢各位的阅读,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注网络,小编每天都会为大家更新不同的知识。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: Android如何获取手机号码信息
本文地址: https://pptw.com/jishu/654894.html