Java - Восстановить номер сим-карты на Android

Надежного решения этой проблемы не существует, потому что номер телефона не является физическим и хранится на сим-карте или извлекается из сети оператора. Лучшее решение — попросить пользователя ввести свой номер самостоятельно. Здесь мы даем решение, но то, которое еще предстоит улучшить в будущем.

Класс TelephonyManager предоставляет сведения о службе телефонии и устройстве. Приложение для Android может использовать методы этого класса для определения номера сим-карты и ее серийного номера, например.

Метод  getLine1Number()  возвращает номер телефона для строки 1 и возвращает null, если MISISDN недоступен.

 
TelephonyManager telemamanger=(TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = telemamanger.getSimSerialNumber();
String getSimNumber = telemamanger.getLine1Number();
Вы также должны добавить разрешение в файл  Androidmanifest.xml:

< uses-permission android:name="android.permission.READ_PHONE_STATE"/> 
References:
http://stackoverflow.com/questions/8570945/get-msisdn-from-the-sim-using-android