将Sim State作为UNKNOWN的可能方法

时间:2014-07-17 13:44:55

标签: java android telephonymanager

任何人都可以解释一下将Sim State作为UNKNOWN的可能方法。

1 个答案:

答案 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.UNKNOWNRADIO_OFF之一时,都会返回RADIO_UNAVAILABLE。然后,State.UNKNOWNSIM_STATE_UNKNOWN方法转换为TelephonyManager.getSimState()常量。

结论:只要SIM状态从一个状态转换到另一个状态,getSimState将返回SIM_STATE_UNKNOWN(例如,当打开飞行模式时,在Sim状态的转换之间,它将处于SIM_STATE_UNKNOWN )。

参考:Sim State