【发布时间】:2011-02-11 09:34:38
【问题描述】:
我想获取插入设备的 sim 卡的手机号码。我知道 android SDK TelephoneManger 是我们可以通过 getLine1Number() 方法获取它的类。但它总是返回空值。
查询:
- 我可以获取手机号码吗 设备?
- 它是依赖于 sim 还是在某些情况下 还依赖于设备?
- 还有其他方法可以从设备获取手机号码吗?
【问题讨论】:
标签: android
我想获取插入设备的 sim 卡的手机号码。我知道 android SDK TelephoneManger 是我们可以通过 getLine1Number() 方法获取它的类。但它总是返回空值。
查询:
【问题讨论】:
标签: android
您正在使用正确且唯一可供普通用户 (AFAIK) 使用的方法。它主要依赖于 SIM 卡(不是必须拥有),并且在某些情况下可能依赖于设备(getLine1Number() 未正确实现)。
更准确地说,IMSI 唯一标识 SIM。但 MSISDN(订户号码)与 SIM 不是唯一相关的,因为可以更改 SIM 上的 MSISDN。网络可以使用 SIM 中的 IMSI 在 HLR 中找到 MSISDN 并建立呼叫。
因此,MSISDN 不是必须在 SIM 卡上。
【讨论】:
您应该查看 this question 及其 cmets。
某些 SIM 卡似乎会导致 getLine1Number() 返回 null...并且没有人找到解决此问题的方法。
【讨论】:
在这种情况下,您始终使用方法 getLine1Number() 方法使用 SharedPreference 保存您的电话号码。当您安装应用程序时,您的电话号码会被保存,当使用新的 sim 卡时,请向您的注册号码发送短信。启动应用程序后,您必须始终检查您存储的号码是否与您的新号码相同。如果相同则不会发生任何事情,如果不相同,则您的应用程序将发送短信。
【讨论】: