webentwicklung-frage-antwort-db.com.de

Ermitteln Sie den Status von zwei SIM-Karten in einem Android-Telefon mit zwei SIM-Karten

Ich möchte erkennen, ob zwei SIM-Karten programmgesteuert in meinem Android-Telefon mit zwei SIM-Karten vorhanden sind. Ich habe eine API (TelephonyManager.getSIMState()) gefunden, aber es ist für normale Einzel-SIM-Telefone. Gibt es APIs zum Erkennen, ob zwei SIMs in mein Dual-SIM-Telefon eingelegt sind oder nicht?

19
candy

Android unterstützt nicht mehrere SIMs, zumindest vom SDK. Gerätehersteller, die Multi-SIM-Geräte erstellt haben, tun dies auf eigene Faust. Gerne können Sie sich an den Hersteller Ihres Geräts wenden, um zu erfahren, ob er über ein SDK-Add-On verfügt oder etwas, über das Sie auf die zweite SIM-Karte zugreifen können.

Bearbeiten: (15. Juli 2015)

Seit API 22 können Sie mit SubscriptionManagers Methode getActiveSubscriptionInfoList() nach mehreren SIMs suchen. Weitere Informationen zu Android Docs .

31
CommonsWare

Wenn das Telefon von MTK mit Strom versorgt wird, können Sie ab sofort die TelephonyManagerEx-Klasse vom MediaTek SDK verwenden. 

Werfen Sie einen Blick auf die Dokumente .

3
Andrey Kopeyko

Nun, das ist kein Narrenbeweis. Wenn Sie jedoch zwei SIM-Karten haben, die sich auf zwei verschiedenen Netzbetreibern befinden, können Sie Folgendes versuchen:

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);
}

}

Idealerweise erhalten Sie für beide SIMs ein Ereignis für den Status des SIM-Dienststatus. Anschließend können Sie den Namen des Netzbetreibers oder ähnliches überprüfen, um zu prüfen, ob Sie zwei SIM-Karten haben. Sie benötigen jedoch zwei SIM-Karten, die in zwei verschiedenen Netzwerken laufen.

1
Rajkiran
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
Pavitha