Проблемы с getLine1Number () для получения номера телефона устройства

Я прочитал, что использование getLine1Number (), как и в приведенном ниже коде, может иметь проблемы, такие как

  1. Возврат null
  2. Возврат недопустимой строки
  3. Причина nullPointer исключение.

Есть ли другие проблемы, которые он может вызвать?

Самая большая проблема, о которой я не уверен, заключается в том, возвращает ли она недопустимый номер (например, номер телефона ранее)? Это самая важная проблема, поскольку, если она возвращает число, могу ли я зависеть от этого числа?

Код:

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

Требуемое разрешение:

 <uses-permission android:name="android.permission.READ_PHONE_STATE"/> 

Насколько мне известно, возвращаемый номер телефона – это то, что хранится на MSISDN SIM-карты, которое не заполнено некоторыми операторами. (Хуже того, согласно некоторым сообщениям, число действительно может быть неверным!)

К сожалению, я не знаю ни одного другого метода.

Да Null возвращается, когда SIM присутствует, и мы все еще не можем прочитать номер. Некоторые SIM-карты не позволяют это делать, в то время как другие просто не имеют номера на SIM-карте.

Вывод Quoting TelephonyManager.getLine1Number () сбой , проблема с Android о PhoneManager и невозможность получения вашего номера PhoneNumber в Android и AlertDialogs на фьючерсном блоге , кажется, что наличие номера в SIM-карте не требуется для работы и фактически назначено сетью , Если вы прочтете ссылку «Вопрос», в комментариях люди предложили, чтобы номер на SIM-карте мог быть изменен пользователем с интерфейса Android. Однако это возможно только в старой версии. Хотя я попытался изменить номер на SIM-карте (после версий Android 4.0), это не позволяет мне это делать. Даже если кто-то меняет его, реальный номер присваивается сетью. Но, поскольку вы извлекаете из хранилища SIM-карты, я бы сказал, что он не на 100% безопасен.

Это мои 2 цента. Надеюсь, поможет.