Détecter l'état de deux cartes SIM dans un téléphone Android Double-SIM

je veux détecter si deux cartes SIM sont là dans mon téléphone android dual-SIM programmatically. J'ai trouvé une API ( TelephonyManager.getSIMState() ), mais c'est pour les téléphones mono-SIM normaux. Y a-t-il des API pour détecter si oui ou non deux SIM sont insérés dans mon téléphone double SIM?

19
demandé sur Kurt McKee 2011-11-03 18:03:57

4 réponses

Android ne prend pas en charge plusieurs SIMs, au moins à partir du SDK. Les fabricants de dispositifs qui ont créé des dispositifs multi-SIM le font eux-mêmes. Vous êtes invités à contacter votre fabricant d'appareils et de voir s'ils ont un add-on SDK ou quelque chose qui vous permet d'accéder au second SIM.

Edit: (15 juillet 2015)

depuis API 22, Vous pouvez vérifier plusieurs SIMs en utilisant SubscriptionManager 'méthode getActiveSubscriptionInfoList() . Plus de détails sur Android Docs .

29
répondu CommonsWare 2015-07-14 20:29:27

à partir de Maintenant, si le téléphone est MTK powered one, vous pouvez utiliser la classe TelephonyManagerEx de MediaTek SDK.

regardez les docs .

3
répondu Andrey Kopeyko 2016-04-04 02:42:49

ce n'est pas une preuve évidente. Mais si vous avez deux SIM qui sont sur deux opérateurs de réseau différents, vous pouvez essayer quelque chose comme ça:

PhoneServiceStateListener listener = new PhoneServiceStateListener(this);
tm.listen(listener, PhoneStateListener.LISTEN_SERVICE_STATE);


.
.
.
class PhoneServiceStateListener extends PhoneStateListener {
Context context = null;

public PhoneServiceStateListener(Context context) {
    this.context = context;
}

public PhoneServiceStateListener() {
}

@Override
public void onServiceStateChanged(ServiceState serviceState) {

    if (serviceState.getState() == ServiceState.STATE_IN_SERVICE) {
        //You get this event when your SIM is in service.
        //If you get this event twice, chances are more that your phone is Dual SIM.
        //Alternatively, you can toggle Flight Mode programmatically twice so
        //that you'll get service state changed event.
    }
    super.onServiceStateChanged(serviceState);
}

}

Idéalement, vous obtiendrez L'état de service SIM changé l'événement pour les deux SIMs et puis vous pouvez vérifier le nom de l'opérateur réseau ou quelque chose comme ça pour vérifier si vous avez deux cartes SIM. Mais vous devez avoir deux cartes SIM fonctionnant sur deux réseaux différents.

1
répondu Rajkiran 2013-05-08 10:35:08
final SubscriptionManager subscriptionManager = SubscriptionManager.from(getApplicationContext());
    final List<SubscriptionInfo> activeSubscriptionInfoList = subscriptionManager.getActiveSubscriptionInfoList();
    int simCount = activeSubscriptionInfoList.size();
    btnBack.setText(simCount+" Sim available");
    Log.d("MainActivity: ","simCount:" +simCount);

    for (SubscriptionInfo subscriptionInfo : activeSubscriptionInfoList) {
        Log.d("MainActivity: ","iccId :"+ subscriptionInfo.getIccId()+" , name : "+ subscriptionInfo.getDisplayName());
    }
0
répondu Pavitha 2017-12-20 07:54:15