我对MSISDN有几个问题。我明白:

  • MSISDN基本上是电话号码
  • 不是IMSI

  • 我需要进一步了解的是:
  • MSISDN号码是否已在SIM卡中刻录(存储)?如果是,是否所有提供商都确保SIM卡中包含MSISDN信息?如果不是,请澄清,没有编程代码可以获取MSISDN号码吗?
  • 有人建议按以下代码获取MSISDN。但是,如果未在设备中设置“我的电话号码”,则两个代码均返回null。另一方面,如果设置了“我的电话号码”,它将返回“我的电话号码”。
    因此,问题是:“我的电话号码”等于MSISDN吗?
    TelephonyManager.getLine1Number();->适用于Android
    Phone.getDevicePhoneNumber(true);->用于Blackberry
  • 如上代码所示,返回字符串数据是从设备本身还是从SIM卡中获取的?
  • 最佳答案

    我对您有一些了解。

  • MSISDN可以存储在SIM卡上,但是大多数网络提供商(南非的所有提供商)都不将MSISDN存储在SIM卡上。造成这种情况的原因有很多,最值得注意的是:
  • 动态MSISDN分配:预付费SIM首次使用时有时会为其分配MSISDN。这意味着网络具有可用MSISDN的池,并在新的预付费SIM联机时分配它们。这意味着在运送SIM时,它们还没有MSISDN,这意味着在运送SIM之前,您无法存储MSISDN。某些网络在一段时间不 Activity 后会“过期” MSISDN分配,尤其是当它们的可用数量不足时,并将这些数字返回到可用池中。
  • 移动号码可移植性:某些国家/地区允许移动用户保留其MSISDN,但可以更改网络。这意味着MSISDN将从用于一个网络的SIM移到用于另一个网络的SIM。

  • 因此,用户通常会以SIM卡上的MSISDN条目为空白来结束。用户仍然可以自己将MSISDN存储在SIM卡上,但这也允许他们存储任意号码,并且不能保证可以设置该号码甚至是用户的实际电话号码。

    2.您询问有关取回SIM卡中存储号码的电话。如果没有设置号码,您将不会得到它;如果用户设置了错误的号码,那么您将获得不正确的详细信息。

    3.正确,此字符串是从SIM本身获取的。

    当移动运营商在 header 中包含MSISDN时,我唯一检测MSISDN的半可靠方法是通过WAP/WEB(您可以做一些Webview技巧来查看正在通过的 header )-但是,只有在网络中您才能看到这些支持该功能,以及用户是否使用移动数据-即,如果用户使用WiFi,则无法使用。

    我能想到的另一种机制(我能想到的唯一有保证的机​​制)是通过USSD session ,因为您总是从运营商那里获得正确的MSISDN,但是我还没有找到以编程方式打开USSD session 并读取的方法。响应(至少在Android中)。我有一个USSD服务,它的唯一输出是MSISDN,但是不幸的是,这对我来说还不可用。

    关于android - MSISDN : Is it a SIM Card Data?为什么所有提供的功能(从Blackberry和Android)来获取MSISDN都不可靠?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10695601/

    10-10 01:48