任何人都可以解释一下将Sim State作为UNKNOWN的可能方法。
答案 0 :(得分:2)
public static final int SIM_STATE_UNKNOWN
SIM卡状态:未知。表示SIM正处于转换状态 国家之间。例如,当用户输入SIM引脚时 PIN_REQUIRED状态,对sim状态的查询返回此状态 转到SIM_STATE_READY。
另请参阅TelephonyManager类的getSimState()
方法的实现。
public State getState() {
if (mState == null) {
switch(mPhone.mCM.getRadioState()) {
/* This switch block must not return anything in
* State.isLocked() or State.ABSENT.
* If it does, handleSimStatus() may break
*/
case RADIO_OFF:
case RADIO_UNAVAILABLE:
case SIM_NOT_READY:
case RUIM_NOT_READY:
return State.UNKNOWN;
case SIM_LOCKED_OR_ABSENT:
case RUIM_LOCKED_OR_ABSENT:
//this should be transient-only
return State.UNKNOWN;
case SIM_READY:
case RUIM_READY:
case NV_READY:
return State.READY;
case NV_NOT_READY:
return State.ABSENT;
}
} else {
return mState;
}
Log.e(mLogTag, "IccCard.getState(): case should never be reached");
return State.UNKNOWN;
}
每当无线电状态为State.UNKNOWN
或RADIO_OFF
之一时,都会返回RADIO_UNAVAILABLE
。然后,State.UNKNOWN
将SIM_STATE_UNKNOWN
方法转换为TelephonyManager.getSimState()
常量。
结论:只要SIM状态从一个状态转换到另一个状态,getSimState
将返回SIM_STATE_UNKNOWN
(例如,当打开飞行模式时,在Sim状态的转换之间,它将处于SIM_STATE_UNKNOWN )。
参考:Sim State。