获取本机号码及sim卡信息

一、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操作的函数获得。

二、下面给出获取手机本机号码及Sim卡状态的代码:
TelephonyManager tm = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);       
String deviceid = tm.getDeviceId();
String tel = tm.getLine1Number();
String  imei = tm.getSimSerialNumber();     
String imsi = tm.getSubscriberId();
String simState = tm.getSimState();
复制代码
三、添加权限:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
复制代码
注意:手机号码不是所有的都能获取。只是有一部分可以拿到。这个是由于移动运营商没有把手机号码的数据写入到sim卡中。这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。不赋值自然为空。这就是为什么很多人得不到本机号码的原因。

四、名词解释:

IMEI:(International Mobile Equipment Identity)是国际移动设备身份码的缩写,国际移动装备辨识码,是由15位数字组成的"电子串号",它与每台手机一一对应,而且该码是全世界唯一的。每一只手机在组装完成后都将被赋予一个全球唯一的一组号码,这个号码从生产到交付使用都将被制造生产的厂商所记录。

IMSI:(InternationalMobileSubscriberIdentificationNumber)国际移动用户识别码,是区别移动用户的标志,储存在SIM卡中,可用于区别移动用户的有效信息。其总长度不超过15位,同样使用0~9的数字。其中MCC是移动用户所属国家代号,占3位数字,中国的MCC规定为460;MNC是移动网号码,最多由两位数字组成,用于识别移动用户所归属的移动通信网;MSIN是移动用户识别码,用以识别某一移动通信网中的移动用户

Android 系统(259)---获取本机号码及sim卡信息相关推荐

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

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

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

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

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

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

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

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

  5. Android 系统(145)---切换两张sim卡的移动网络,自动锁屏

    切换两张sim卡的移动网络,自动锁屏 1描述 1. 插入两张sim卡,设置安全锁屏 2. 设置--网络和互联网--SIM卡--首选sim卡--移动数据--切换两张卡的移动网络 3. 手机自动锁屏   ...

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

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

  7. 安卓系统根据SIM卡槽ID获取SIM卡信息

    导入一个包: import android.telephony.SubscriptionManager; 声明变量: SubscriptionManager mSubscriptionManager ...

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

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

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

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

最新文章

  1. 第一章 Mysql 简介及安装和配置
  2. Day 24: 使用Yeoman自动构建Ember项目
  3. 前端JavaScript基础知识点
  4. 数据结构与算法的联系
  5. python3-pandas 数据结构 Series、DataFrame 基础
  6. layoutSubview 总结
  7. selenium+webdriver+java(基本小例子及初始化三种浏览器)---------------
  8. python降噪突出人声_KlipC带您探寻——华为全新智慧动态降噪耳机
  9. html页面右下角添加js广告,javascript实现右下角广告框效果
  10. 矩阵可逆与行列式关系的一个直观推导
  11. C/C++实现matlab的imfill()函数
  12. 一个简单的界面拖动切换效果类ScrollViewGroup
  13. 处理 unity崩溃日志
  14. C++实现 1432. 棋盘挑战
  15. 文件包含漏洞(原理及介绍)
  16. C# 调用ffmpeg把rtsp视频流保存为MP4文件
  17. 圣地亚哥大学计算机科学专业,加州大学圣地亚哥分校计算机科学本科
  18. 如何实现select * exclude column
  19. 基于三维地图的可视化工厂优势
  20. 8102秋季校招:我的校招经历+Android岗总结(面经+技巧)

热门文章

  1. 【openMV】色块追踪
  2. linux路由内核实现分析(四)---路由缓存机制(4)
  3. Linux netfilter源码分析(6)
  4. php文件覆盖相同文件,为什么这个PHP代码在打开时会覆盖文件内容?
  5. 怎么写显示商品图片_虾皮商店封面图片 虾皮商店介绍怎么写吸引人
  6. php如何上传文件,PHP上传文件
  7. JQzoom的一些问题
  8. hive学习07-常见的优化
  9. java中为什么要使用代理
  10. Windows编译libcaffe时报cudnn.hpp(114): too few arguments in function call错误