web-dev-qa-db-fra.com

Récupérer par programme le numéro IMEI pour une double carte SIM sous Android

Pour une seule carte SIM, le code suivant fonctionne:

TelephonyManager tm = (TelephonyManager)getSystemService(TELEPHONY_SERVICE);
String imei= tm.getDeviceId();

Pour la double SIM, j'ai essayé le code sur le lien suivant:

Android: vérifier si le téléphone est double SIM

Mais cela n'a pas fonctionné pour moi.

Faites-moi savoir si d'autres solutions sont possibles.

10
NehaC

Essayez d’utiliser getDeviceId(int slotId) added dans l’API de niveau 23.

Renvoie l'ID de périphérique unique d'un abonnement, par exemple, l'IMEI pour GSM et le MEID pour les téléphones CDMA. Renvoie la valeur null si l'ID de périphérique n'est pas disponible.

Permission requise: READ_PHONE_STATE

5
Dheeraj V.S.

Nous pouvons vérifier si un téléphone simple ou double sim est utilisé à l'aide de l'API Android et de l'IMEI pour chaque carte sim.

TelephonyManager manager = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE);
Log.i("OmSai ", "Single or Dula Sim "+manager.getPhoneCount());
Log.i("OmSai ", "Defualt device ID "+manager.getDeviceId());
Log.i("OmSai ", "Single 1 "+manager.getDeviceId(0));
Log.i("OmSai ", "Single 2 "+manager.getDeviceId(1));
3
Vijay Shelke
TelephonyManager first = (TelephonyManager) getFirstMethod.invoke(null, obParameter);

Log.d(TAG, "Device Id: " + first.getDeviceId() + ", device status: " + first.getSimState() + ", operator: " + first.getNetworkOperator() + "/" + first.getNetworkOperatorName());

obParameter[0] = 1;
TelephonyManager second = (TelephonyManager) getFirstMethod.invoke(null, obParameter);

Log.d(TAG, "Device Id: " + second.getDeviceId() + ", device status: " + second.getSimState()+ ", operator: " + second.getNetworkOperator() + "/" + second.getNetworkOperatorName());
1
Ravindra Barnwal

Oui, nous pouvons obtenir les deux numéros IMEI en utilisant ce code ci-dessous

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
String imeiNumber1 = tm.getDeviceId(1); //(API level 23)   
String imeiNumber2 = tm.getDeviceId(2);
1
user7036069
TelephonyManager telephony = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
    try {

        Class<?> telephonyClass = Class.forName(telephony.getClass().getName());
        Class<?>[] parameter = new Class[1];
        parameter[0] = int.class;
        Method getFirstMethod = telephonyClass.getMethod("getDeviceId", parameter);
        Log.d("SimData", getFirstMethod.toString());
        Object[] obParameter = new Object[1];
        obParameter[0] = 0;
        TelephonyManager manager = (TelephonyManager) this.getSystemService(Context.TELEPHONY_SERVICE);
        String first = (String) getFirstMethod.invoke(telephony, obParameter);
        Log.d("SimData", "first :" + first);
        obParameter[0] = 1;
        String second = (String) getFirstMethod.invoke(telephony, obParameter);
        Log.d("SimData", "Second :" + second);

    } catch (Exception e) {
        e.printStackTrace();
    }

essayez d'utiliser cela, cela devrait aider à obtenir les deux identifiant de périphérique sur Android Lollipop

1
Akshay Shah

Étapes: 1> Vous devez avoir l'autorisation READ_PHONE_STATE activée 

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

2> Pour Android SDK v23 <= obtenir SIM 1 & SIM 2 IMEI par ceci:

TelephonyManager tm = (TelephonyManager)getSystemService(Context.TELEPHONY_SERVICE);
    Log.e("IMEI---1:", tm.getDeviceId(0) );
    Log.e("IMEI---2:", tm.getDeviceId(1) );
0
abir99

Vous pouvez utiliser cette méthode pour obtenir les deux imei. Désolé pour le dérangement. J'étais pressé.

public static void samsungTwoSims(Context context) {
    TelephonyManager telephony = (TelephonyManager)context.getSystemService(Context.TELEPHONY_SERVICE);

try{

        Class<?> telephonyClass = Class.forName(telephony.getClass().getName());

        Class<?>[] parameter = new Class[1];
        parameter[0] = int.class;
        Method getFirstMethod = telephonyClass.getMethod("getDefault", parameter);

        Log.d(TAG, getFirstMethod.toString());

        Object[] obParameter = new Object[1];
        obParameter[0] = 0;
        TelephonyManager first = (TelephonyManager) getFirstMethod.invoke(null, obParameter);

        Log.d(TAG, "Device Id: " + first.getDeviceId() + ", device status: " + first.getSimState() + ", operator: " + first.getNetworkOperator() + "/" + first.getNetworkOperatorName());

        obParameter[0] = 1;
        TelephonyManager second = (TelephonyManager) getFirstMethod.invoke(null, obParameter);

        Log.d(TAG, "Device Id: " + second.getDeviceId() + ", device status: " + second.getSimState()+ ", operator: " + second.getNetworkOperator() + "/" + second.getNetworkOperatorName());
    } catch (Exception e) {
        e.printStackTrace();
    }   
}
0
user6676551

Vous pouvez IMEI dans Android O ou supérieur.

Set<String> deviceIdList = new HashSet<>();
TelephonyManager telephonyManager = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
int phoneCount = telephonyManager.getPhoneCount();
for (int i = 0; i < phoneCount; i++) {
   deviceIdList.add(telephonyManager.getImei(i));
}
0
Brijesh Gupta

Autant que je sache, ce n'est pas possible. La réflexion Java que vous avez utilisée pourrait fonctionner pour certains appareils, mais pas pour tous. Cependant, il est possible que certaines API spécifiques au fabricant le permettent.

Citant Commonsware ,

Android ne prend pas en charge plusieurs cartes SIM, du moins à partir du SDK. Dispositif les fabricants qui ont créé des appareils multi-SIM le font sur leur posséder. Nous vous invitons à contacter le fabricant de votre appareil et à vérifier si ils ont un add-on SDK ou quelque chose qui vous permet d'accéder au deuxième carte SIM.

0
Sahil Mahajan Mj

Oui Android actuellement non pris en charge Dual Sim. Mais vous pouvez retrouver tous les détails possibles en utilisant la réflexion Java. 

Je recherche des informations sur la double carte SIM et cela fonctionne sur les appareils à soufflets
Samsung Galaxy Neo
Moto E
Micromax A52
Micromax Canvas
Linovo P780
HTC Dreem
Moto G
LG
HUAWEI Y520-U22
LG-P705
Sony ST26i
J'obtiens avec succès des détections à double SIM des modèles ci-dessus

0
user3131373