Android 获取SIM卡手机号

相信APP在开发中经常用到SIM卡手机号,经过一些测试分析,提供一下个人的理解分析。手机号码不是所有的都能获取。只是有一部分可以拿到。这个是由于移动运营商没有把手机号码的数据写入到sim卡中.SIM卡只有唯一的编号,供网络与设备识别那就是IMSI号码,手机的信号也可以说是通过这个号码在网络中传递的,并不是手机号码。试想,你的SIM丢失后,补办一张新的会换号码吗?是不会的.就是因为在你的手机号码对应的IMSI号 在移动运营商中被修改成新SIM卡的IMSI号码。 
那么手机号为什么有的就能显示呢? 
这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。不赋值自然为空。 
对于移动的用户,手机号码(MDN)保存在运营商的服务器中,而不是保存在SIM卡里。SIM卡只保留了IMSI和一些验证信息。手机每次入网注册的时候,都会以短信的形式将IMSI及验证信息上传到运营商的服务器,服务器在完成注册动作之后,会以短信的形式将注册的结果下发到手机里。下发的内容会因条件不同而不同。 
如果服务器在下发的短信中,不包含手机的号码,手机是无法取得电话号码。如果短信中包含了号码,手机才会将其缓存,以备他用.此外,对于其他运行商的SIM卡或者UIM卡,MDN有可能保存在UIM卡中。100%能够取得本机号码不太可能。 
移动神州行,联通的卡是可以取到的.动感地带的取不到.别的卡还没有试过.

能够读取SIM卡号的话应该有前提.那就是SIM卡已经写入了本机号码,不然是无法读取的。

如果SIM已经写入了本机号码,通过下面的代码可以获取到本机号码:

//创建电话管理

TelephonyManager tm = (TelephonyManager)

//与手机建立连接

activity.getSystemService(Context.TELEPHONY_SERVICE);

//获取手机号码

String phoneId = tm.getLine1Number();

//记得在manifest file中添加

     <uses-permission

android:name= "android.permission.READ_PHONE_STATE"  />

各个Android版本差异看这里http://blog.csdn.net/wds1181977/article/details/50594977

Android 系统(258)---获取SIM卡手机号相关推荐

  1. Android 获取SIM卡手机号

    相信APP在开发中经常用到SIM卡手机号,经过一些测试分析,提供一下个人的理解分析.手机号码不是所有的都能获取.只是有一部分可以拿到.这个是由于移动运营商没有把手机号码的数据写入到sim卡中.SIM卡 ...

  2. Android开发之获取SIM卡信息和手机号码

    获取SIM卡信息和手机号码的工具类,记录一下方便以后使用 import android.content.Context; import android.telephony.TelephonyManag ...

  3. android 双卡开发获取sim卡默认数据卡,获取sim卡信息,sim1卡,sim2卡 2G/3G/4G信号强度

    1:默认数据卡 private int getDefalutDataID(){SubscriptionManager subscriptionManager = (SubscriptionManage ...

  4. android AT指令获取SIM卡ICCID

    1.打开终端 # adb shell # cat /dev/TTYEMS02 2.打开另一终端,发送AT指令(ICCID为20位) # echo "at^DCID\r" > ...

  5. android 获取sim卡,Android 获取手机SIM卡运营商

    直接上代码: /** * 获取SIM卡运营商 * * @param context * @return */ public static String getOperators(Context con ...

  6. android 获取sim卡operator

    android 获取sim卡运营商信息 TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TELEPHO ...

  7. Android如何获取SIM卡信息

    android 获取sim卡运营商信息 TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TELEPHO ...

  8. Android 获取SIM卡信息

    android 获取sim卡运营商信息 TelephonyManager tm = (TelephonyManager)Context.getSystemService(Context.TELEPHO ...

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

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

最新文章

  1. C#创建MQTT客户端接收服务器信息
  2. 推荐6个HTML5编辑器
  3. Windbg内核调试之四: Dump文件分析
  4. java程序设计题目_Java程序设计习题集(含答案).doc
  5. MongoDB 教程一: 安装和使用 (Mongodb启动命令mongod参数说明)
  6. Asp.net Ajax Control Toolkit设计编程备忘录(色眼窥观版)——第5回(错不了专辑)
  7. css让image不改变大小_如何改变图片大小
  8. V4L2抓取USB摄像头YUV视频数据代码
  9. 5G牌照发放了,但需要购买5G手机的用户应等明年再购买
  10. 正确使用“width:100%“
  11. java字符型变量有几个,Java 字符型变量
  12. 电脑出现missing operating system解决办法
  13. 辅材先生之打开传统向互联网+辅材这把锁
  14. 激活函数选取不当为什会造成梯度消失
  15. for和of引导的不定式结构的区别
  16. Fully Convolutional Networks for Semantic Segmentation
  17. 为什么要用收费邮箱,免费邮箱和付费邮箱的差别
  18. 数值计算方法之1——三种迭代公式对比
  19. Fixed Unsafe Object binding Checkmarx in Java,Java 解决 Unsafe Object binding
  20. 秋叶喻死亡,是用诗来

热门文章

  1. 【蓝桥杯嵌入式】【STM32】4_TIM之定时器及其中断、PWM初探
  2. 嵌入式Linux系统编程学习之十八进程间通信(IPC)简介
  3. php使用hset报错,hSet 命令/方法/函数
  4. 【前端】第三章 Vue
  5. Zookeeper架构及FastLeaderElection机制
  6. 序列化与反序列化存储、updatepanel
  7. hdu-5493 Queue(二分+树状数组)
  8. Mysql数据表的操作
  9. Java基础知识学习(七)
  10. 一维数组的初始化问题