Ошибка TelephonyManager.getLine1Number()?
Я хочу получить номер телефона устройства Android. Я использую этот код:
TelephonyManager tm = (TelephonyManager)this.getApplicationContext().getSystemService(Context.TELEPHONY_SERVICE);
String phoneNumber= tm.getLine1Number();
На моем телефоне (HTC Wildfire) я не могу получить номер телефона - все, что я получаю, это пустая строка. Если я запускаю код на emulatur, обычно отображается номер телефона.
Если я перейду в Настройки = > О телефоне = > Идентификатор телефона- > Номер телефона, номер телефона "Неизвестно".
Где проблема? Что-то не так с моей SIM-картой?
Ответы
Ответ 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()
, я получаю пустую строку.