什么是SIM状态值时,"飞行模式和QUOT;被接通 [英] What is the value of SIM state when "airplane mode" is turned on

查看:362
本文介绍了什么是SIM状态值时,"飞行模式和QUOT;被接通的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我不知道什么是SIM状态由<一个返回值href=\"http://developer.android.com/reference/android/telephony/TelephonyManager.html#getSimState%28%29\"相对=nofollow> TelephonyManager.getSimState() 当飞行模式是否已经开启?这似乎没有直接规定在SDK规范的任何地方。

I wonder what is the value of SIM state returned by TelephonyManager.getSimState() when "airplane mode" is turned on? This seems to be not directly specified anywhere in the SDK specification.

其实我需要得到运营商的SIM code(MCC + MNC,即)使用<一个href=\"http://developer.android.com/reference/android/telephony/TelephonyManager.html#getSimOperator%28%29\"相对=nofollow> getSimOperator() 方法,但JavaDoc中指出,使用该方法:

Actually I need to get SIM operator code (i.e. MCC+MNC) using getSimOperator() method, but JavaDoc states that to use that method:

SIM状态必须<一个href=\"http://developer.android.com/reference/android/telephony/TelephonyManager.html#SIM_STATE_READY\"相对=nofollow> SIM_STATE_READY

更新

我测试了它在模拟器并返回<一个href=\"http://developer.android.com/reference/android/telephony/TelephonyManager.html#SIM_STATE_UNKNOWN\"相对=nofollow> SIM_STATE_UNKNOWN (这是由javadoc的描述为状态之间的转换)后,飞行模式已打开。不过,我想知道它是否是在Android手机常见的行为?

I tested it under emulator and it returns SIM_STATE_UNKNOWN (which is described by javadoc as a "transition between states") after airplane mode is switched on. However I would like to know whether it is a common behavior on Android phones?

推荐答案

搜索的Andr​​oid 4.1源后我发现下面的code私营类之一<一个href=\"http://androidxref.com/4.1.1/xref/frameworks/base/telephony/java/com/android/internal/telephony/IccCard.java\"相对=nofollow> com.android.internal.telephony.IccCard

After searching Android 4.1 sources I found the following code in one of the private classes 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 将返回每当无线电状态是<一个href=\"http://androidxref.com/4.1.1/xref/frameworks/opt/telephony/src/java/com/android/internal/telephony/CommandsInterface.java#30\"相对=nofollow> RADIO_OFF 或<一个href=\"http://androidxref.com/4.1.1/xref/frameworks/opt/telephony/src/java/com/android/internal/telephony/CommandsInterface.java#31\"相对=nofollow> RADIO_UNAVAILABLE 。然后 State.UNKNOWN 将被转换为 SIM_STATE_UNKNOWN TelephonyManager.getSimState()方法。

So State.UNKNOWN would be returned whenever radio state is one of RADIO_OFF or RADIO_UNAVAILABLE. Then State.UNKNOWN will be converted to SIM_STATE_UNKNOWN constant by TelephonyManager.getSimState() method.

由于结论:当飞行模式已开启 getSimState 将返回 SIM_STATE_UNKNOWN

As the conclusion: when airplane mode is turned on getSimState will return SIM_STATE_UNKNOWN.

这篇关于什么是SIM状态值时,&QUOT;飞行模式和QUOT;被接通的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆