当手机插入 某些国外的小运营商SIM卡时,在下拉栏中打开数据连接,运营商名称显示为空。原因就是在MSimTelephonyManager.getDefault().getSimOperatorName(index);时取得为空,所以显示为空:
public String getSimOperatorName(int subscription) {
String alpha = getTelephonyProperty(
subscription == 0 ? TelephonyProperties.PROPERTY_ICC_OPERATOR_ALPHA
: TelephonyProperties.PROPERTY_ICC2_OPERATOR_ALPHA, "");
if ("".equals(alpha)) {
String numeric = getSimOperator(subscription);
if (numeric != null && numeric.length() > 3)
alpha = (String) SpnProvider.getSPNByMCCMNC(sContext, numeric);
} else {
LocaleNamesParser localeNamesParser = new LocaleNamesParser(sContext,"MSimTelephonyManager",
com.android.internal.R.array.origin_carrier_names,
com.android.internal.R.array.locale_carrier_names);
alpha = localeNamesParser.getLocaleName(alpha).toString();
}
return alpha;
}
在上面的代码中,有这行: alpha = (String) SpnProvider.getSPNByMCCMNC(sContext, numeric);这个就是读取系统中默认有的运营商名称的地方,而系统默认提供的运营商名称是在framework\base\core\java\android\provider\SpnProvider.java中提供的,我们只要知道该运营商的mcc = xx, mnc = xx就可以自己添加上去了。