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

v12know v12know 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
论坛的大牛,在网上找了一下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%能够取得本机号码不太可能。

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

...全文
评论 8
收藏 已收藏
分享
返回顶部
v12know
Android 80,490 成员 91,375 内容