如何在J2ME中获取电话号码?

时间:2011-09-02 21:41:07

标签: java-me phone-number

如何获取J2ME应用程序中的电话号码(不是联系号码等)?属于手机中SIM卡的电话号码。

1 个答案:

答案 0 :(得分:32)

  

手机中属于SIM卡的电话号码......

以上假设是错误的。

SIM卡不存储您的电话号码

SIM卡仅存储与您的电话号码无关的唯一标识符。

移动与网络交互的方式大致如下:

- [phone] hello network, ID on my SIM is 12345
- [network] hello 12345, I recognized you as a sim card
            currently bound to phone number 987-654-321

如果您对细节感兴趣,可以很好地描述上面in this article

如果您想了解有关此唯一ID的更多信息,请在网络上搜索国际移动订阅者身份(IMSI)。如果您想从Java ME访问此数据,您很可能需要支持JSR 177 SATSA的电话,并且您需要了解APDU的工作原理。但这无助于您获取电话号码。

但是......为什么会这样?

你的意思是,为什么他们使用一些唯一的标识符而不是电话号码?这很简单。想一想当你松开或破坏你的SIM卡时会发生什么,或者当有人偷走它时更好。

您想要新的SIM卡,但是您想要先前的号码吗?很好 - 你去办公室,他们给你新的SIM卡,并将其绑定到您的旧号码。现在,之后如何运作,

- [stolen phone] hello network, ID on my SIM is 12345
- [network] hello 12345, I recognized you as invalid sim card
            so I will ignore you
- [your new phone] hello network, ID on my SIM is 23456
- [network] hello 23456, I recognized you as a sim card
            currently bound to phone number 987-654-321

好的但为什么哦为什么不存储IMSI和电话号码?

因为这样便宜得多。再想一想SIM卡丢失/损坏的情况。怎么了?你到办公室,桌子上的人给你新的SIM卡,并在数据库中添加一条记录,告诉你SIM卡现在已经绑定了你的旧电话号码。这很简单又便宜。

如果他们必须将您的电话号码存储在SIM卡上,他们必须以某种方式将其记录在那里并测试添加的记录是否按预期工作。这是额外的工作 - 而且,他们会从中获得什么?什么都没有。

但是......但是这似乎在某种程度上与iPhone有关不是吗?

不完全如此:Programmatically get own phone number in iOS