首先我们来明确几个概念:

SIM卡存储的数据可分为四类:

第一类是固定存放的数据。这类数据在移动电话机被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMSI)、鉴权密钥(KI)、鉴权和加密算法等等。

第二类是暂时存放的有关网络的数据。如位置区域识别码(LAI)、移动用户暂时识别码(TMSI)、禁止接入的公共电话网代码等。

第三类是相关的业务代码,如个人识别码(PIN)、解锁码(PUK)、计费费率等。

第四类是电话号码簿,是手机用户随时输入的电话号码。用户全部资料几乎都存储在SIM卡内,因此SIM卡又称为用户资料识别卡。

IMSI是一个唯一的数字, 标识了GSM和UMTS 网络里的唯一一个用户. 它存储 在手机的SIM卡里,它会通过手机发送到网络上. IMSI 与 SIM唯一对应

IMEI也是一串唯一的数字, 标识了 GSM 和 UMTS网络里的唯一一个手机.它通常被打印在手机里电池下面的那一面,拨 *#06# 也能看到它. IMEI 与 设备唯一对应.

1。IMEI不存在于SIM卡中,它是手机本身的串号。
2。通常我们所说的手机号也不存在于SIM卡中,虽然SIM卡中有一个专门存储SIM卡本身号码的地方,但是此号码是通过手工设定的,而且是可以更改的。   SIM卡的识别通常使用IMSI号,这个对于SIM卡是唯一的。
3。使用SimGetRecordInfo之类的函数获得SIM卡的IMSI号码能否成功依赖于设备制造商是否实现了此函数,据我所知在DOPOD的机器上是可以获得,但是在联想的机器上却不行,其他机器没有。
4。获得IMEI以及IMSI可以通过RIL或者TAPI中的LINE操作的函数获得。

下面给出获取手机本机号码的代码:

TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);

String deviceid = tm.getDeviceId();

String tel = tm.getLine1Number();

String imei = tm.getSimSerialNumber();

String imsi = tm.getSubscriberId();

添加权限:

<uses-permission android:name="android.permission.READ_PHONE_STATE" />

注意,手机号码不是所有的都能获取。只是有一部分可以拿到。这个是由于移动运营商没有把手机号码的数据写入到sim卡中。这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。不赋值自然为空。这就是为什么很多人得不到本机号码的原因。

转自:http://blog.csdn.net/lifanupc/article/details/5721484

Android 本机号码的获取相关推荐

  1. Android本机号码及Sim卡状态的获取

    SIM卡存储的数据可分为四类: 第一类是固定存放的数据.这类数据在移动电话机被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMSI).鉴权密钥(KI).鉴权和加密算法等等. 第二类是暂时存放的 ...

  2. android 本机号码一键登录,什么是本机号码一键登录?APP本机号码一键登录如何实现?...

    三大运营商推出一键登录的服务后,由于其便捷性和安全性都好于传统短信验证码,越来越多的APP注册登录环节都在使用本机号码一键登录验证方式.本文主要介绍了本机号码一键登录特点以及实现方法. 一.什么是本机 ...

  3. 【Android】如何获取本机号码、IMSI、EMSI

    获取本机号码: 获取本机号码,需要在配置文件中加入权限: <uses-permission android:name="android.permission.READ_PHONE_ST ...

  4. android 获取本机号码需要root吗?

    首先要明白,有的手机是获取不到自身的手机号的, 查了些资料,有以下两种方式可以获取到:      1. 通过对方给你发短信,打电话获取本机号码:       2. 还有一个就是通过APN来查询,但是这 ...

  5. android运营商获取本机号码_一键登录已成大势所趋,Android端操作指南来啦!

    根据极光(Aurora Mobile)发布的<2019年Q2移动互联网行业数据研究报告>,2019年第二季度,移动网民人均安装APP总量已达56款.面对如此繁多的APP,想在用户的手机中占 ...

  6. Android 系统(259)---获取本机号码及sim卡信息

    获取本机号码及sim卡信息 一.SIM卡存储的数据可分为四类,它们分别是: 第一类是固定存放的数据.这类数据在移动电话机被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMSI).鉴权密钥(KI ...

  7. Android获取本机号码(双卡双待无法获取两个号码)

    搞了一个想获取Android手机的本机号码的功能,但是发现双卡双待的手机是无法获取到两个号码 的.在Android的官方文档是没有提供相应的Api的,因为标准的Andoird是没有双卡的,好像也只有国 ...

  8. android通过sim卡获取本机号码,Android获取本机号码及Sim卡状态

    SIM卡存储的数据可分为四类: 第一类是固定存放的数据.这类数据在移动电话机被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMSI).鉴权密钥(KI).鉴权和加密算法等等. 第二类是暂时存放的 ...

  9. Android获取本机号码、IMEI等

    SIM卡存储的数据可分为四类: 第一类是固定存放的数据.这类数据在移动电话机被出售之前由SIM卡中心写入,包括国际移动用户识别号(IMSI).鉴权密钥(KI).鉴权和加密算法等等. 第二类是暂时存放的 ...

最新文章

  1. 14 款命令行常用工具的替代品!
  2. php substr 去掉前n位_用PHP是如何做图片防盗链的
  3. Android中常见的MVC模式
  4. ubuntu16安装pylearn2 出现错误提示importerror:no module named six.moves
  5. 2017.4.27 道路游戏 思考记录
  6. PSD分层电商促销模板|换季大促销,不怕老板催你做海报了
  7. 经典算法题随机从连续的100个不重复数中取出100个不重复随机数
  8. 深度学习怎么入门?零基础快速入门深度学习
  9. 关于Oppenheim不等式的加强
  10. unity3d游戏资源提取
  11. 成都有哪些牛批的互联网公司?
  12. 信息内容安全-《人民的名义》人物图谱分析实验
  13. Kubeedge实现原理
  14. 规范国内省份名称【Java】
  15. Android方法数methods超过65536
  16. 灰度图像--形态学处理:腐蚀、膨胀、开操作、闭操作、顶帽、底帽等
  17. Linux源码编译-编译哪些设备树
  18. Blender几何节点新手教学
  19. java基础知识--(常用类)String类
  20. 7:1 error Expected indentation of 2 spaces but found 4 indent 11:35 error Newline requir

热门文章

  1. python简笔画绘制 数据驱动绘图_python数据分析绘图可视化
  2. 【AlgorithmTraining】11:OnlineJ(下)
  3. 可视化的三大误区,哪些可视化工具受欢迎?
  4. 微信小程序修改与添加对象
  5. MT6732资料MT6732datasheet资料
  6. 运筹学到底是啥玩意?
  7. Apple ID密保问题是个梗
  8. SCA-Soft Composition Analysis软件成分分析
  9. 一个UI设计师在工作中所需要具备的综合能力!
  10. 晶澳为越南首个PERC光伏电站供应全部组件