关于Android手机如何获取本机电话号码的问题

v12know 2012-03-12 02:58:00
论坛的大牛,在网上找了一下Android手机如何获取本机电话号码的资料,发现了

这段代码:

//创建电话管理
TelephonyManager tm = (TelephonyManager)
//与手机建立连接
activity.getSystemService(Context.TELEPHONY_SERVICE);
//获取手机号码
String phoneId = tm.getLine1Number();
//在manifest file中添加
<uses-permission android:name="android.permission.READ_PHONE_STATE" />

但这段代码可用的前提是SIM卡里面已经烧入了手机号码信息,对于没有烧入的SIM则无能为力了。

然后再查了一下手机号的来电能显示的原因

对于移动的用户,手机号码(MDN)保存在运营商的服务器中,而不是保存在SIM卡里。SIM卡只保留了IMSI和一些验证信息。手机每次入网注册的时候,都会以短信的形式将IMSI及验证信息上传到运营商的服务器,服务器在完成注册动作之后,会以短信的形式将注册的结果下发到手机里。下发的内容会因条件不同而不同。

如果服务器在下发的短信中,不包含手机的号码,手机是无法取得电话号码。如果短信中包含了号码,手机才会将其缓存,以备他用.此外,对于其他运行商的SIM卡或者UIM卡,MDN有可能保存在UIM卡中。100%能够取得本机号码不太可能。

也就是说一定要有移动运营商的介入才可以得到手机号吗?各位大虾有没有更好的办法?

...全文
3242 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
veryitman 2012-03-15
  • 打赏
  • 举报
回复
这个的确是条件决定的!
ascatgz 2012-03-15
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 yiyaaixuexi 的回复:]
手机号码不是所有的都能获取。只是有一部分可以拿到。
这个是由于移动运营商没有把手机号码的数据写入到sim卡中.SIM卡只有唯一的编号,供网络与设备 识别那就是IMSI号码,手机的信号也可以说是通过这个号码在网络中传递的,并不是手机号码。试想,你的SIM丢失后,补办一张新的会换号码吗?是不会 的.就是因为在你的手机号码对应的IMSI号 在移动运营商中被修改成新SIM卡的IMSI号码。

那么手……
[/Quote]
可以考虑从短信里面获取。。。
念茜 2012-03-15
  • 打赏
  • 举报
回复
手机号码不是所有的都能获取。只是有一部分可以拿到。
这个是由于移动运营商没有把手机号码的数据写入到sim卡中.SIM卡只有唯一的编号,供网络与设备 识别那就是IMSI号码,手机的信号也可以说是通过这个号码在网络中传递的,并不是手机号码。试想,你的SIM丢失后,补办一张新的会换号码吗?是不会 的.就是因为在你的手机号码对应的IMSI号 在移动运营商中被修改成新SIM卡的IMSI号码。

那么手机号为什么有的就能显示呢?
这个就像是一个变量,当移动运营商为它赋值了,它自然就会有值。不赋值自然为空。
wang2019881117 2012-03-15
  • 打赏
  • 举报
回复
无法获取。
Android提高班 2012-03-14
  • 打赏
  • 举报
回复
没太懂 还是学习了!
majaw 2012-03-14
  • 打赏
  • 举报
回复
你分析的很正确,确实没有其它办法来获取手机号
CyberLogix 2012-03-14
  • 打赏
  • 举报
回复
SIM卡上有才能获得啊

80,351

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧