我对你有一些了解。
- MSISDN可以存储在 SIM 卡上,但是大多数网络提供商(所有南非的提供商)不会将 MSISDN 存储在 SIM 卡上。这有几个原因,最值得注意的是:
- 动态 MSISDN 分配:预付费 SIM 在首次使用时有时会分配一个 MSISDN。这意味着网络有一个可用的 MSISDN 池,并在新的预付费 SIM 上线时分配它们。这意味着在运送 SIM 卡时,它们还没有 MSISDN,这意味着您无法在运送 SIM 卡之前存储 MSISDN。一些网络在一段时间不活动后“过期” MSISDN 分配,尤其是当它们的可用号码运行不足时,并将这些号码返回到可用池。
- 移动号码可携带性:一些国家允许移动用户保留其 MSISDN,但更改网络。这意味着 MSISDN 将从用于 1 个网络的 SIM 转移到用于另一个网络的 SIM。
因此,用户经常以 SIM 上的 MSISDN 条目为空白而告终。用户仍然可以将 MSISDN 存储在自己的 SIM 卡上,但这也允许他们存储任意号码,并且不能保证设置或什至是用户的实际电话号码。
2.您询问的那些电话获取存储在 SIM 卡中的号码。如果未设置号码,您将不会得到它,如果用户设置了错误的号码,那么您将获得不正确的详细信息。
3. 正确,此字符串是从 SIM 卡本身获取的。
当移动运营商在标头中包含 MSISDN 时,我检测 MSISDN 的唯一半可靠方法是通过 WAP/WEB(您可以做一些 webview 技巧来查看正在通过的标头) - 但是您只能在网络上看到这些支持它,如果用户使用移动数据 - 即如果用户使用 WiFi,它将无法工作。
我能想到的另一种机制(我能想到的唯一有保证的机制)是通过 USSD 会话,因为您总是从运营商那里获得正确的 MSISDN,但我还没有找到一种以编程方式打开 USSD 会话并阅读的方法响应(至少在 Android 中)。我有一个 USSD 服务,它的唯一输出是 MSISDN,但不幸的是,这还没有证明对我有用。