关于Android手机如何获取本机电话号码的问题
论坛的大牛,在网上找了一下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%能够取得本机号码不太可能。
也就是说一定要有移动运营商的介入才可以得到手机号吗?各位大虾有没有更好的办法?