我想知道返回的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(使用前将#替换为@)