Подтвердить что ты не робот

Ошибка TelephonyManager.getLine1Number()?

Я хочу получить номер телефона устройства Android. Я использую этот код:

TelephonyManager tm = (TelephonyManager)this.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE); 
String phoneNumber=  tm.getLine1Number();

На моем телефоне (HTC Wildfire) я не могу получить номер телефона - все, что я получаю, это пустая строка. Если я запускаю код на emulatur, обычно отображается номер телефона.

Если я перейду в Настройки = > О телефоне = > Идентификатор телефона- > Номер телефона, номер телефона "Неизвестно".

Где проблема? Что-то не так с моей SIM-картой?

4b9b3361

Ответ 1

У нас была та же проблема в нашем проекте. Вывод заключается в том, что это зависит от SIM-карты.

Что случилось с нами:

  • Galaxy S с AT & T SIM-картой: может читать номер телефона, Настройки показывают номер
  • Та же галактика с европейской SIM-картой: не может прочитать номер и "неизвестно" в настройках (сотовый телефон был совершенно функциональным, просто не мог прочитать номер)

Об этом сообщается и на других форумах.

В конце концов мы решили спросить у пользователя номер телефона. На самом деле это немного больше: if( "SIM card present" && "cannot read the cell number") "ask user"; . В противном случае мы будем продолжать прослушивать пользователя, у которого нет SIM-карты.

Ответ 2

Вместо номера телефона используйте серийный номер SIM-карты, который всегда существует и всегда является допустимым значением.

 telephonyManager.getSimSerialNumber();

Серийный номер SIM уникален внутри оператора как минимум. В сочетании с

 telephonyManager.getNetworkOperator();

у вас будет уникальный идентификатор для абонента внутри страны.

В сочетании с

 telephonyManager.getNetworkCountryIso();

у вас будет глобальный уникальный идентификатор для подписчика.

Надеюсь, это поможет.

Приветствия.

Ответ 3

SIM-карта хранит номер телефона и может быть отредактирована вами. Не могу сказать, для Android, но на WM вы можете легко редактировать свой номер телефона, который хранится на SIM-карте. Конечно, это не значит, что вы можете изменить свой номер телефона на лету. На самом деле, вы можете написать там любой номер, который вам нравится, и программы будут считать, что это ваш реальный номер:)

Ответ 4

Когда я переместил SIM-карту на новый телефон, я иногда обнаружил, что номер телефона не отображается в настройках → О телефоне → Состояние → Мой номер телефона.

Мои данные:

  • AT & T Atrix, устанавливающий полностью новую SIM-карту, говорит: "Голос MSISDN Line1 null".
  • T-Mobile G1, вставляя в него новую SIM-карту, правильно отображает номер телефона.
  • Перемещение SIM-карты T-Mobile G2 из моего старого G1 в "Неизвестно".

Ответ 5

Номер телефона, если SIM-карта позволяет ему получить его. В нашей компании я нашел только одну SIM-карту, которой разрешено получать номер. Я придерживаюсь этой SIM-карты на всех устройствах Android. Все в порядке. getLine1Number() в порядке. Теперь я ищу номер телефона для других SIM-карт. Отправьте sms на наш sms-сервер или другое устройство Android (с обработкой SMS)

Ответ 6

Я использую сим-карту, которая разрешает передачу данных. Он не разрешает телефонные звонки.

Когда я пытаюсь получить phonenumber с getLine1Number(), я получаю пустую строку.