我已经读过使用getLine1Number(),如下面的代码中可能会出现问题,例如
是否还有其他问题?
我不确定的最大问题是,它是否返回无效数字(就像之前手机的号码一样)?这是最重要的问题,因为如果它返回一个数字,我可以依赖这个数字吗?
代码:
TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE);
String mPhoneNumber = tMgr.getLine1Number();
必需许可:
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
答案 0 :(得分:2)
据我所知,返回的电话号码是SIM卡的 MSISDN 中存储的内容,某些运营商未填写。 (更糟糕的是,根据一些报道,这个数字可能实际上是不正确的!)
不幸的是,我也不知道任何其他方法。
答案 1 :(得分:1)
当SIM存在时,会返回Null
,但仍然无法读取该号码。某些SIM卡不允许这样做,而其他SIM卡则没有SIM卡中的号码。
引用TelephonyManager.getLine1Number() failing,Android issue about TelephoneManager和The impossibleness of getting your PhoneNumber in Android and AlertDialogs on Futures blog,似乎SIM中的号码不是操作所必需的,并且实际上是由网络分配的。如果你阅读了问题的链接,那么人们在评论中建议用户可以从Android界面更改SIM中的号码。但是,这可能只适用于旧版本。虽然我已经尝试更改SIM中的数字(在Android 4.0版本之后),但它不允许我这样做。即使有人更改了它,实际号码也会由网络分配。但是,既然你从SIM存储中提取,我会说它不是100%安全的。
这是我的2美分。希望能帮助到你。