Comment obtenir le numéro de carte SIM actuel dans Android?

je veux connaître le numéro de mobile de L'utilisateur dans Android. J'ai utilisé ce code mais je n'ai pas de numéro.

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE); 
        String n = tm.getLine1Number();

Autorisation:

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

Est-il obligatoire pour sauvegarder un numéro de mobile android settings --> about phone --> status --> myphone number

Aucune idée sur ce point?

34
demandé sur Santosh Kumar 2012-12-27 11:27:34

6 réponses

je pense que sim Numéro de série et le numéro de la carte sim est unique. Vous pouvez essayer ceci pour obtenir le numéro de série sim et obtenir le numéro sim et N'oubliez pas d'ajouter la permission dans le fichier manifest.

TelephonyManager telemamanger = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
String getSimSerialNumber = telemamanger.getSimSerialNumber();
String getSimNumber = telemamanger.getLine1Number();

et Ajouter ci-dessous la permission dans votre Androidmanifest.xml fichier.

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

faites-moi savoir s'il y a un problème.

25
répondu Dipak Keshariya 2013-09-03 17:03:11

obtenir le numéro de téléphone, IMEI, et SIM ID de carte

TelephonyManager tm = (TelephonyManager) 
            getSystemService(Context.TELEPHONY_SERVICE);        

pour la carte SIM, utilisez le getSimSerialNumber ()

    //---get the SIM card ID---
    String simID = tm.getSimSerialNumber();
    if (simID != null)
        Toast.makeText(this, "SIM card ID: " + simID, 
        Toast.LENGTH_LONG).show();

numéro de téléphone de votre téléphone, utilisez le getLine1Number () (certains appareils ne renvoient pas le numéro de téléphone)

    //---get the phone number---
    String telNumber = tm.getLine1Number();
    if (telNumber != null)        
        Toast.makeText(this, "Phone number: " + telNumber, 
        Toast.LENGTH_LONG).show();

numéro IMEI du téléphone, utilisez le getDeviceId ()

    //---get the IMEI number---
    String IMEI = tm.getDeviceId();
    if (IMEI != null)        
        Toast.makeText(this, "IMEI number: " + IMEI, 
        Toast.LENGTH_LONG).show();

Permissions nécessaires à l'

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
7
répondu Anil gangwar 2016-04-27 11:50:25

mise à jour: cette réponse n'est plus disponible car Whatsapp avait cessé d'exposer le numéro de téléphone comme nom de Compte, ignorez gentiment cette réponse.

=================================================================================

Cela fait presque 6 mois et je crois que je devrais mettre à jour ceci avec une solution alternative que vous pourriez vouloir considérer.

A partir d'aujourd'hui, vous pouvez compter sur une autre grande application Whatsapp, en utilisant AccountManager. Des Millions d'appareils ont cette application installée et si vous ne pouvez pas obtenir le numéro de téléphone via TelephonyManager, vous pouvez donner un coup de feu.

Autorisation:

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

Code:

AccountManager am = AccountManager.get(this);
Account[] accounts = am.getAccounts();

ArrayList<String> googleAccounts = new ArrayList<String>();
for (Account ac : accounts) {
    String acname = ac.name;
    String actype = ac.type;
    // Take your time to look at all available accounts
    System.out.println("Accounts : " + acname + ", " + actype);
}

vérifier actype pour le compte whatsapp

if(actype.equals("com.whatsapp")){
    String phoneNumber = ac.name;
}

bien sûr, vous ne pouvez pas l'obtenir si l'utilisateur N'a pas installé Whatsapp, mais sa valeur pour essayer de toute façon. Et rappelez-vous que vous devez toujours demander confirmation à l'utilisateur.

6
répondu Chor Wai Chun 2014-06-25 02:19:56

Vous avez tout le droit, mais le problème est avec getLine1Number() fonction.

getLine1Number () - cette méthode retourne la chaîne de numéros de téléphone pour la ligne 1, I. e le MSISDN pour un téléphone GSM. Renvoie null si elle n'est pas disponible.

cette méthode ne fonctionne que pour peu de téléphones cellulaires mais pas pour tous les téléphones.

donc, si vous devez effectuer des opérations selon le sim (autre que l'appel), alors vous devez utiliser getSimSerialNumber(). Il est toujours unique,valide et existe.

3
répondu Sahil Mahajan Mj 2012-12-27 09:05:33

nécessite le READ_PHONE_STATE permission.

TelephonyManager telMgr = (TelephonyManager) 
                           context.getSystemService(Context.TELEPHONY_SERVICE);
String deviceID = telMgr.getDeviceId();
String simSerialNumber = telMgr.getSimSerialNumber(); 
String simLineNumber = telMgr.getLine1Number(); 
1
répondu Gauraw Yadav 2018-03-29 06:29:38

vous pouvez utiliser le TelephonyManager pour faire ceci:

TelephonyManager t = (TelephonyManager)getSystemService(TELEPHONY_SERVICE); 
String number = t.getLine1Number();

Avez-vous utilisé

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
-10
répondu Nirav Ranpara 2012-12-27 07:29:53