我一直試圖在我的應用程序中顯示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系統如何顯示正確的值。他們在內部聽什麼?
_ 「但在運行Android Lollipop 5.0 ...」 _從文檔: 「'公共的SubscriptionInfo getActiveSubscriptionInfoForSimSlotIndex(INT slotIdx)' **在API級別22 **」 API級22的是Android 5.1 ** **。 – Michael
檢查兩個SIM是否在使用中在設備設置中被激活 –