“飞行模式”打开时SIM状态的值是多少

2024-02-16

我想知道返回的SIM状态值是多少TelephonyManager.getSimState() http://developer.android.com/reference/android/telephony/TelephonyManager.html#getSimState%28%29“飞行模式”何时开启? SDK 规范中似乎没有直接指定这一点。

实际上我需要使用SIM卡运营商代码(即MCC+MNC)getSimOperator() http://developer.android.com/reference/android/telephony/TelephonyManager.html#getSimOperator%28%29方法,但 JavaDoc 声明要使用该方法:

SIM 状态必须是SIM_STATE_READY http://developer.android.com/reference/android/telephony/TelephonyManager.html#SIM_STATE_READY

UPDATE

我在模拟器下测试它并返回SIM_STATE_UNKNOWN http://developer.android.com/reference/android/telephony/TelephonyManager.html#SIM_STATE_UNKNOWN(javadoc 将其描述为“状态之间的转换”)打开飞行模式后。不过我想知道这是否是Android手机上的常见行为?


搜索 Android 4.1 源代码后,我在一个私有类中发现了以下代码com.android.internal.telephony.IccCard http://androidxref.com/4.1.1/xref/frameworks/base/telephony/java/com/android/internal/telephony/IccCard.java:

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;
}  

So State.UNKNOWN每当无线电状态是其中之一时就会返回无线电关闭 http://androidxref.com/4.1.1/xref/frameworks/opt/telephony/src/java/com/android/internal/telephony/CommandsInterface.java#30 or 无线电_不可用 http://androidxref.com/4.1.1/xref/frameworks/opt/telephony/src/java/com/android/internal/telephony/CommandsInterface.java#31. Then State.UNKNOWN将被转换为SIM_STATE_UNKNOWN常数由TelephonyManager.getSimState() method.

结论:当开启飞行模式时getSimState将返回SIM_STATE_UNKNOWN.

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

“飞行模式”打开时SIM状态的值是多少 的相关文章

随机推荐