首先要明白,有的手机是获取不到自身的手机号的,

查了些资料,有以下两种方式可以获取到:
     1. 通过对方给你发短信,打电话获取本机号码;
      2. 还有一个就是通过APN来查询,但是这个必须有移动或者联通的服务接口才能查到。

目前还没有“获得本机号码”的方法,getLine1Number()方法只是显示在GSM电话中SIM卡提供的号码。有些移动商封锁了这个API。

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

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 phoneMgr=(TelephonyManager)this.getSystemService(Context.TELEPHONY_SERVICE);

注: 根据Android的安全机制,在使用TelephonyManager时,必须在AndroidManifest.xml中添加<uses-permission android:name="READ_PHONE_STATE" /> 否则无法获得系统的许可。

private void loadPhoneStatus() {

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

txtPhoneModel.setText(Build.MODEL); //手机型号

txtPhoneNumber.setText(phoneMgr.getLine1Number());

//本机电话号码

txtSdkVersion.setText(Build.VERSION.SDK);//SDK版本号

txtOsVersion.setText(Build.VERSION.RELEASE);//Firmware/OS 版本号

}

//事实上,Build能向我们提供包括 硬件厂商,硬件编号,序列号等很多信息 调用方法也都同上,很简单。

添加权限:

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

注意,手机号码不是所有的都能获取。只是有一部分可以拿到。

这个是由于移动运营商没有把手机号码的数据写入到sim卡中。

这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。

不赋值自然为空。这就是为什么很多人得不到本机号码的原因。

转载于:https://www.cnblogs.com/new0801/p/6175827.html

android 获取本机号码需要root吗?相关推荐

  1. Android 获取本机号码(收集)

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

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

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

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

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

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

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

  5. 【转】Android 获取本机号码(收集)

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

  6. Android获取本机号码闪退,手机号码是移动的,现在手机已经停机,想充话费却不知道本机号码,肿么查询本机号码?()...

    一般来说,现在的智能手机在通讯录里面有自己的本机号码的. 如果没有,首先你的手机要欠费停机,然后电话打不出去了的时候. 然后拨打10086等他说完,接人工服务. 告诉她你手机停机了,需要紧急开机,对就 ...

  7. Android获取本机号码及运营商

    import android.content.Context; import android.telephony.TelephonyManager; import android.util.Log;p ...

  8. Android 获取本机号码

    直接来代码: 权限:<uses-permission android:name="android.permission.READ_PHONE_STATE" /> //获 ...

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

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

最新文章

  1. JDBC连接数据库过程
  2. Linux平台Java调用so库-JNI使用例子
  3. python设计抽奖游戏 球_python3实现小球转动抽奖小游戏
  4. 【mysql解决办法】insert into select 想插入的数据如果部分为空怎么办?
  5. go语言buffio与继承
  6. KEIL、uVision 和 MDK 区别和联系
  7. boost::signals2模块实现多线程信号调用基准的测试程序
  8. centos 7 安装 npm 工具
  9. C#关键字详解第二节
  10. jsp判断json第一位_java 判断字符串是否为json格式
  11. vnpy通过jqdatasdk初始化实时数据及历史数据下载
  12. angularJs内置指令63个
  13. centos os u盘启动盘_怎么制作linux系统安装盘,U盘启动盘
  14. 道路车辆 盲区监测(bsd)系统性能要求及试验方法_LKA、BSD国标出炉,狩猎和绞杀即将开始...
  15. Python脚本系列:拳皇13一键出招以及连段实现!谁打得过我?
  16. 程序猿头头(object与数组的简单应用)
  17. win10系统没有信息服务器地址,Win10没有有效的ip配置
  18. 什么是SUM函数以及如何在Python,Excel和Mathlab中使用?
  19. 迅雷极速版下载被迅雷屏蔽资源
  20. MATLAB求解导弹运动的一些基础方法

热门文章

  1. 转:QQ圈子:社交神器还是隐私魔鬼?
  2. WF流程设计器升级说明
  3. Verilog中`define和parameter有什么区别
  4. FPGA和DSP间基于SRIO的高速通信系统设计
  5. 《计算机基础(2008版)》第4次作业,《计算机基础(2008版)》第5次作业.doc
  6. 不用for 也能实现按照某索引排好某序列
  7. VC++ MSXML创建XML文件以及对XML文档解析
  8. python模块学习(四)
  9. Redis笔记整理(三):进阶操作与高级部分
  10. ios4--UIView的常见属性(尺寸和位置)