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

Mar*_*ono 14 android blackberry phone-number sim-card msisdn

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

  1. MSISDN基本上就是电话号码
  2. 它不是IMSI

我需要进一步了解的是:

  1. MSISDN号码是否在SIM卡中烧毁(存储)?如果是,是否所有提供商都确保SIM卡中有MSISDN信息?如果不是,需要澄清的是,没有编程代码可以获取MSISDN号码?

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

    TelephonyManager.getLine1Number(); - >适用于Android

    Phone.getDevicePhoneNumber(true); - >黑莓手机

  3. 如上面的代码,返回字符串数据是从设备本身还是从SIM卡中获取的?

dar*_*ten 22

我对你有所了解.

  1. MSISDN 可以存储在SIM卡上,但是大多数网络提供商(南非的所有提供商)都不会将MSISDN存储在SIM卡上.这有几个原因,最值得注意的是:
    • 动态MSISDN分配:首次使用预付费SIM时,有时会为其分配MSISDN.这意味着网络具有可用的MSISDN池,并在新的预付费SIM上线时分配它们.这意味着当SIM卡出厂时,它们还没有MSISDN,这意味着在发送SIM卡之前无法存储MSISDN.某些网络在一段时间不活动后会过期'MSISDN分配,特别是当它们的可用数量不足时,并将这些数字返回到可用池.
    • 移动号码可携带性:一些国家/地区允许移动用户保留其MSISDN但更改网络.这意味着MSISDN将从用于1个网络的SIM移动到用于另一个网络的SIM.

因此,用户通常最终将SIM上的MSISDN条目留空.用户仍然可以在SIM卡上存储MSISDN,但这也允许它们存储任意数字,并且不保证设置或甚至不是订户的实际电话号码.

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

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

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

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