После поиска в источниках Android 4.1 я нашел следующий код в одном из частных классов com.android.internal.telephony.IccCard
:
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()
.
Как вывод: при включении режима полета getSimState
вернет SIM_STATE_UNKNOWN
.