2016-04-01 26 views
0

我一直試圖在我的應用程序中顯示gsmSignalStrength()。以下代碼用於檢查SIM是否存在Android 5.0,SIM_STATE_ABSENT爲第二個插槽返回false,即使存在SIM卡

private boolean checkIfSimIsPresent() { 
    if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP_MR1) { 
     SubscriptionManager sManager = (SubscriptionManager) mContext.getSystemService(Context.TELEPHONY_SUBSCRIPTION_SERVICE); 
     SubscriptionInfo infoSim1 = sManager.getActiveSubscriptionInfoForSimSlotIndex(0); 
     SubscriptionInfo infoSim2 = sManager.getActiveSubscriptionInfoForSimSlotIndex(1); 
     if(infoSim1 != null || infoSim2 != null) { 
      return true; 
     } 
    } else { 
     TelephonyManager telephonyManager = (TelephonyManager) mContext.getSystemService(Context.TELEPHONY_SERVICE); 
     if (telephonyManager.getSimState() != TelephonyManager.SIM_STATE_ABSENT){ 
      return true; 
     } 
    } 
    return false; 
} 

這段代碼非常好。但是在Android Lollipop 5.0中,即使插入了SIM卡,第二個SIM插槽也會返回false。

有沒有人遇到同樣的問題? Android系統顯示gsmStrength,但爲什麼Telephony Manager中的SIM_STATE_ABSENT返回false?

一般來說,Android系統如何顯示正確的值。他們在內部聽什麼?

+0

_ 「但在運行Android Lollipop 5.0 ...」 _從文檔: 「'公共的SubscriptionInfo getActiveSubscriptionInfoForSimSlotIndex(INT slotIdx)' **在API級別22 **」 API級22的是Android 5.1 ** **。 – Michael

+0

檢查兩個SIM是否在使用中在設備設置中被激活 –

回答

相關問題