源码提示的地方
ServiceStateTracker.java
public void setNotification(int notifyType) {
......
case CS_REJECT_CAUSE_ENABLED:
notificationId = CS_REJECT_CAUSE_NOTIFICATION;
int resId = selectResourceForRejectCode(mRejectCode, multipleSubscriptions);
if (0 == resId) {
loge("setNotification: mRejectCode=" + mRejectCode + " is not handled.");
return;
} else {
icon = com.android.internal.R.drawable.stat_notify_mmcc_indication_icn;
// if using the single SIM resource, mSubId will be ignored
title = context.getString(resId, mSubId);
details = null;
}
break;
}
private int selectResourceForRejectCode(int rejCode, boolean multipleSubscriptions) {
int rejResourceId = 0;
switch (rejCode) {
case 1:// Authentication reject
rejResourceId = multipleSubscriptions
? com.android.internal.R.string.mmcc_authentication_reject_msim_template :
com.android.internal.R.string.mmcc_authentication_reject;
break;
case 2:// IMSI unknown in HLR
rejResourceId = multipleSubscriptions
? com.android.internal.R.string.mmcc_imsi_unknown_in_hlr_msim_template :
com.android.internal.R.string.mmcc_imsi_unknown_in_hlr;
break;
case 3:// Illegal MS
rejResourceId = multipleSubscriptions
? com.android.internal.R.string.mmcc_illegal_ms_msim_template :
com.android.internal.R.string.mmcc_illegal_ms;
break;
case 6:// Illegal ME
rejResourceId = multipleSubscriptions
? com.android.internal.R.string.mmcc_illegal_me_msim_template :
com.android.internal.R.string.mmcc_illegal_me;
break;
default:
// The other codes are not defined or not required by operators till now.
break;
}
return rejResourceId;
}
原因是 卡的mcc ims 在对应运营商的HLR 数据中, 没有找到,应该是SIM的原因