2016-03-30 3 views
-2

Я использовал этот код для извлечения номера, но он дал мне пустойКак получить номер мобильного телефона андроида

TelephonyManager tMgr = (TelephonyManager)mAppContext.getSystemService(Context.TELEPHONY_SERVICE); 
String mPhoneNumber = tMgr.getLine1Number(); 
+0

Вы хотите получить номер мобильного телефона? – Jois

+0

Он не всегда возвращает номер мобильного телефона, поэтому иногда он может вернуть значение null. Все зависит от поставщика сети, который предоставляет номер мобильного телефона. – HendraWD

+0

Возможный дубликат [Программно получить номер телефона телефона Android] (http://stackoverflow.com/questions/2480288/programmatically-obtain-the-phone-number-of-the-android-phone) –

ответ

0

Это не всегда может вернуть номер мобильного телефона.

Позвольте мне объяснить, как это работает: когда вы покупаете новую SIM-карту для нового номера, провайдер уже (хотя и не всегда) помещает мобильный номер в SIM-карту (SIM-карты имеют небольшую память). Теперь TelephonyManager API пытается прочитать это число. Если он доступен, он возвращает номер.

Теперь вы можете получить SIM-карту без связанного с ней мобильного номера. Пример - новая SIM-карта для портирования (где вы используете предыдущий номер на новой SIM-карте). Эти SIM-карты не имеют на них никакого номера, и, следовательно, TelephonyManager возвращает null.

Теперь, даже если TelephonyManager возвращает номер, вы не должны не должны доверять ему быть прав. Потому что многие устройства предоставляют возможность редактировать этот номер.

0

Для использования getLine1Number() вам необходимо либо READ_PHONE_STATE ИЛИ READ_SMS разрешение. Возможно, вам это не хватает.

И помните, что он возвращает null, если строка номера телефона недоступна.

+0

Я дал эти разрешения. но он все равно возвращает нулевое значение. –

+0

не может содержать номер телефона на этом устройстве ... –

+0

Настройки >> о телефоне >> статус >> номер телефона недоступен –

Смежные вопросы