我有几个关于MSISDN的问题。我明白了:
我需要进一步了解的是:
MSISDN号码是否已在SIM卡中刻录(存储)?如果是,是否所有提供商都确保SIM卡中有MSISDN信息?如果不是,那么澄清一下,编程代码是否都不能获取MSISDN号码?
有人建议按以下代码获取MSISDN。但如果未在设备中设置“我的电话号码”,则两个代码都返回null。反过来,如果设置了它,它将返回“我的电话号码”。 因此,问题是:“我的电话号码”等于MSISDN?
TelephonyManager.getLine1Number();
- >对于Android
Phone.getDevicePhoneNumber(true);
- >对于黑莓
如上所述,返回字符串数据是从设备本身还是从SIM卡中提取的?
答案 0 :(得分:19)
我对你有所了解。
因此,用户通常最终将SIM上的MSISDN条目留空。用户仍然可以在SIM卡上存储MSISDN,但这也允许他们存储任意数字,并且不保证设置或甚至不是订户的实际电话号码。
2.您询问的有关获取存储在SIM卡中的号码的电话。如果未设置该号码,您将无法获得该号码,如果用户设置了错误的号码,则您将获得不正确的详细信息。
3.正确,此字符串是从SIM卡本身获取的。
我检测MSISDN的唯一半可靠方法是通过WAP / WEB,当移动运营商在标题中包含MSISDN时(你可以做一些webview技巧来查看标题是什么) - 但是你只能看到这些如果网络支持它并且用户在移动数据上 - 即如果用户在WiFi上则无法工作。
我能想到的另一种机制(我能想到的唯一保证机制)是通过USSD会话,因为你总是从运营商那里得到正确的MSISDN,但我还没有找到一种以编程方式打开USSD的方法。会话和阅读响应(至少在Android中)。我有一个USSD服务,其唯一的输出是MSISDN,但不幸的是,这还没有证明对我有用。
答案 1 :(得分:1)
由于您在发布问题后的最后一小时内没有人回复,这就是我所知道的(尽管我不是这方面的专家,只是有一些经验):
答案 2 :(得分:0)
您应该考虑到MSISDN具有BIGINT类型。 因此输出它会提前进行类型转换, 像这样