Как получить номер телефона в J2ME?

Как получить номер телефона (не номера контактов и т.д.) в приложении J2ME? Номер телефона, который принадлежит SIM-карте в телефоне.

Ответ 1

номер телефона, который принадлежит 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

Если вы заинтересованы в деталях, то в этой статье описывается

Если вы хотите узнать больше об этом уникальном идентификаторе, найдите в Интернете термин "Международный идентификатор мобильного абонента" (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, не так ли?

Не совсем так: Программно получить собственный номер телефона в iOS