android 4.3代码:
//双卡槽通知栏运营商信息显示
/*
更新运营商信息
*/
private void updateCarrierText(int sub) {
//sub:卡槽
int textResId = 0;
if (mAirplaneMode) {
textResId = com.android.internal.R.string.lockscreen_airplane_mode_on;
} else {
if (DEBUG) {
Slog.d(TAG, "updateCarrierText for sub:" + sub + " simState =" + mMSimState[sub]);
}
//mMSimState[sub]:SIM卡状态获取
switch (mMSimState[sub]) {
case ABSENT:
case UNKNOWN:
case NOT_READY:
textResId = com.android.internal.R.string.lockscreen_missing_sim_message_short;
break;
case PERSO_LOCKED:
textResId = com.android.internal.R.string.lockscreen_network_locked_message;
break;
case PIN_REQUIRED:
textResId = com.android.internal.R.string.lockscreen_sim_locked_message;
break;
case PUK_REQUIRED:
textResId = com.android.internal.R.string.lockscreen_sim_puk_locked_message;
break;
case READY:
// If the state is ready, set the text as network name.
mCarrierTextSub[sub] = mMSimNetworkName[sub];
break;
case PERM_DISABLED:
textResId = com.android.internal.
R.string.lockscreen_permanent_disabled_sim_message_short;
break;
case CARD_IO_ERROR:
textResId = com.android.internal.R.string.lockscreen_sim_error_message_short;
break;
default:
textResId = com.android.internal.R.string.lockscreen_missing_sim_message_short;
break;
}
}
if (textResId == com.android.internal.R.string.lockscreen_missing_sim_message_short
&& PhoneStatusBar.STATUSBAR_STYLE == PhoneStatusBar.STATUSBAR_STYLE_CT) {
textResId = com.android.internal.R.string.lockscreen_missing_uim_message_short;
}
if (textResId != 0) {
mCarrierTextSub[sub] = mContext.getString(textResId);
}
}
/*
判断是否插入SIM卡
*/
public boolean iccSimCardExist(int sub) {
return ((mMSimState[sub] == IccCardConstants.State.PIN_REQUIRED) || (mMSimState[sub] == IccCardConstants.State.PUK_REQUIRED)
|| (mMSimState[sub] == IccCardConstants.State.PERSO_LOCKED) || (mMSimState[sub] == IccCardConstants.State.READY)
|| (mMSimState[sub] == IccCardConstants.State.PERM_DISABLED) || (mMSimState[sub] == IccCardConstants.State.CARD_IO_ERROR)
|| (mMSimState[sub] == IccCardConstants.State.DETECTED));
}
/*
setText 进运营商信息----显示
*/
private void setCarrierText() {
String carrierName = null;
//未插入双卡时运营商信息不显示,View.GONE
if(iccSimCardExist(MSimConstants.SUB2)&&(!iccSimCardExist(MSimConstants.SUB1))){
carrierName = getMultiSimName(MSimConstants.SUB2) + ":"
+ mCarrierTextSub[MSimConstants.SUB2];
}
//双卡槽直插入一张卡时只显示插入卡的运营商信息,View.VISIBLE
else if(iccSimCardExist(MSimConstants.SUB1)&&(!iccSimCardExist(MSimConstants.SUB2))){
carrierName = getMultiSimName(MSimConstants.SUB1) + ":"
+ mCarrierTextSub[MSimConstants.SUB1];
}
//其他,View.VISIBLE
else{
carrierName = getMultiSimName(MSimConstants.SUB1) + ":"
+ mCarrierTextSub[MSimConstants.SUB1]
+ " "
+ getMultiSimName(MSimConstants.SUB2) + ":"
+ mCarrierTextSub[MSimConstants.SUB2];
}
for (int i = 0; i < mMobileLabelViews.size(); i++) {
TextView v = mMobileLabelViews.get(i);
v.setText(carrierName);
//根据双卡状态决定运营商信息是否显示
if(iccSimCardExist(MSimConstants.SUB1) && iccSimCardExist(MSimConstants.SUB2)){
v.setVisibility(View.VISIBLE);
}else{
v.setVisibility(View.GONE);
}
}
}
return Settings.System.getString(mContext.getContentResolver(),
Settings.System.MULTI_SIM_NAME[subscription]);
}