MSISDN:它是SIM卡数据吗?为什么所有提供的功能(来自Blackberry和Android)获取MSISDN不可靠?

时间:2012-05-22 04:06:55

标签: android blackberry phone-number sim-card msisdn

我有几个关于MSISDN的问题。我明白了:

  1. MSISDN基本上是电话号码
  2. 不是IMSI
  3. 我需要进一步了解的是:

    1. MSISDN号码是否已在SIM卡中刻录(存储)?如果是,是否所有提供商都确保SIM卡中有MSISDN信息?如果不是,那么澄清一下,编程代码是否都不能获取MSISDN号码?

    2. 有人建议按以下代码获取MSISDN。但如果未在设备中设置“我的电话号码”,则两个代码都返回null。反过来,如果设置了它,它将返回“我的电话号码”。 因此,问题是:“我的电话号码”等于MSISDN?

      TelephonyManager.getLine1Number(); - >对于Android

      Phone.getDevicePhoneNumber(true); - >对于黑莓

    3. 如上所述,返回字符串数据是从设备本身还是从SIM卡中提取的?

3 个答案:

答案 0 :(得分:19)

我对你有所了解。

  1. MSISDN 可以存储在SIM卡上,但大多数网络提供商(南非的所有提供商)都不会将MSISDN存储在SIM卡上。这有几个原因,最值得注意的是:
    • 动态MSISDN分配:首次使用预付费SIM时,有时会为其分配MSISDN。这意味着网络具有可用的MSISDN池,并在新的预付费SIM上线时分配它们。这意味着当SIM卡出厂时,它们还没有MSISDN,这意味着在发送SIM卡之前无法存储MSISDN。有些网络在一段时间不活动后会过期'MSISDN分配,特别是当它们的可用数量不足时,并将这些数字返回到可用池。
    • 移动号码可移植性:一些国家/地区允许移动用户保留其MSISDN但更改网络。这意味着MSISDN将从用于1个网络的SIM移动到用于其他网络的SIM。
  2. 因此,用户通常最终将SIM上的MSISDN条目留空。用户仍然可以在SIM卡上存储MSISDN,但这也允许他们存储任意数字,并且不保证设置或甚至不是订户的实际电话号码。

    2.您询问的有关获取存储在SIM卡中的号码的电话。如果未设置该号码,您将无法获得该号码,如果用户设置了错误的号码,则您将获得不正确的详细信息。

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

    我检测MSISDN的唯一半可靠方法是通过WAP / WEB,当移动运营商在标题中包含MSISDN时(你可以做一些webview技巧来查看标题是什么) - 但是你只能看到这些如果网络支持它并且用户在移动数据上 - 即如果用户在WiFi上则无法工作。

    我能想到的另一种机制(我能想到的唯一保证机制)是通过USSD会话,因为你总是从运营商那里得到正确的MSISDN,但我还没有找到一种以编程方式打开USSD的方法。会话和阅读响应(至少在Android中)。我有一个USSD服务,其唯一的输出是MSISDN,但不幸的是,这还没有证明对我有用。

答案 1 :(得分:1)

由于您在发布问题后的最后一小时内没有人回复,这就是我所知道的(尽管我不是这方面的专家,只是有一些经验):

  1. MSISDN是电话号码;人们可以给你打电话的号码。
  2. 因为您可以更改SIM卡(升级或更改为其他操作员)并保留您的电话号码= MSISDN,因此无法“烧毁”到SIM卡中。我认为运营商有一个映射表,它从SIM卡ID转换到MSISDN,然后在进行呼叫/数据传输时返回。 MSISDN可能存储在卡上。

答案 2 :(得分:0)

您应该考虑到MSISDN具有BIGINT类型。 因此输出它会提前进行类型转换, 像这样