Java - Récupérer le numéro de la carte Sim sur Android

Il n'existe pas une solution fiable a ce problème parce que le numéro de téléphone n'est pas physique et stocké dans la carte sim, ou récupéré depuis le réseau de l'opérateur. La meilleur solution est de demander à l'utilisateur d'entrer lui même son numéro. Ici on donne une solution mais qui reste à améliorer dans le futur.

La classe TelephonyManager fournit des informations sur le service de la téléphonie et l'appareil. Une application Android peut utiliser les méthodes de cette classe pour déterminer le numéro de sim et son numéro de série par exemple.

La méthode getLine1Number() retourne le numéro de téléphone pour la ligne 1 et retourne null si le MISISDN est indisponible.

 
TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = telemamanger.getSimSerialNumber();
String getSimNumber = telemamanger.getLine1Number();
Il faut ajouter aussi la permission dans le fichier Androidmanifest.xml:

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