2010-10-20 12 views
38

Bir cihazın sim kartı programlı olup olmadığını kontrol etmek için yardıma ihtiyacım var. Lütfen örnek kod verin.Sim Kart'ın bir android cihazda mevcut olup olmadığını nasıl kontrol edebilirim?

+0

Sim kartlarına sahip olmayan CDMA telefonlarından ne haber? – Falmarri

+0

@Senthil Mg Hey sim kartın telefonda mevcut olup olmadığını nasıl öğrenebilirim? Telefon Yöneticisi ile denedim ama doğru cevap alamıyorum. Bana daha basit bir örnek verebilir misin, böylece daha fazla anlayabileceğim. – anddev

+0

@Mansi Vora, açıkça karşılaştığınız sorunu belirtin, bunun için aşağıdaki cevabı kontrol ettiniz. –

cevap

100

TelephonyManager'ı kullanın.

Falmarri notları gibi

http://developer.android.com/reference/android/telephony/TelephonyManager.html

, sen olacak hatta bir GSM telefonu ile ilgileniyor olmadığını görmek için, tüm getPhoneType İLK kullanmak istiyorum. Eğer öyleyse, o zaman SIM durumunu da alabilirsiniz.


DÜZENLEME

TelephonyManager telMgr = (TelephonyManager) getSystemService(Context.TELEPHONY_SERVICE); 
    int simState = telMgr.getSimState(); 
      switch (simState) { 
       case TelephonyManager.SIM_STATE_ABSENT: 
        // do something 
        break; 
       case TelephonyManager.SIM_STATE_NETWORK_LOCKED: 
        // do something 
        break; 
       case TelephonyManager.SIM_STATE_PIN_REQUIRED: 
        // do something 
        break; 
       case TelephonyManager.SIM_STATE_PUK_REQUIRED: 
        // do something 
        break; 
       case TelephonyManager.SIM_STATE_READY: 
        // do something 
        break; 
       case TelephonyManager.SIM_STATE_UNKNOWN: 
        // do something 
        break; 
      } 
:

Eğer getSimState(int slotIndex) kullanarak tek tek sim yuvaları için SimState sorgulayabilir API 26 (Android O Önizleme) başlayarak yani:

int simStateMain = telMgr.getSimState(0); 
int simStateSecond = telMgr.getSimState(1); 

official documentation

sizinle ve yaşlı API gelişmekte ediyorsanız kullanabilirsiniz API 23 eklendi TelephonyManager's

String getDeviceId (int slotIndex) 
//returns null if device ID is not available. ie. query slotIndex 1 in a single sim device 

int devIdSecond = telMgr.getDeviceId(1); 

//if(devIdSecond == null) 
// no second sim slot available 

- docs here

+0

Cevabınız için teşekkürler, girilen telefon numarasının telefon rehberinden geçerli olup olmadığını nasıl kontrol edeceğimi bana bildirin –

+20

Bu, ikili SIM cihazlar için nasıl çalışır? – gonzobrains

8

Aşağıdaki kod ile kontrol edebilirsiniz:

public static boolean isSimSupport(Context context) 
    { 
     TelephonyManager tm = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE); //gets the current TelephonyManager 
     return !(tm.getSimState() == TelephonyManager.SIM_STATE_ABSENT); 

    } 
0

Bunu yapmanın başka bir yolunu bulduk.

public static boolean isSimStateReadyorNotReady() { 
     int simSlotCount = sSlotCount; 
     String simStates = SystemProperties.get("gsm.sim.state", ""); 
     if (simStates != null) { 
      String[] slotState = simStates.split(","); 
      int simSlot = 0; 
      while (simSlot < simSlotCount && slotState.length > simSlot) { 
       String simSlotState = slotState[simSlot]; 
       Log.d("MultiSimUtils", "isSimStateReadyorNotReady() : simSlot = " + simSlot + ", simState = " + simSlotState); 
       if (simSlotState.equalsIgnoreCase("READY") || simSlotState.equalsIgnoreCase("NOT_READY")) { 
        return true; 
       } 
       simSlot++; 
      } 
     } 
     return false; 
    } 
İlgili konular