[FAQ17975] Android M 首次开机不随sim卡自适应语言修改方案

[FAQ17975] Android M 首次开机不随sim卡自适应语言修改方案

内容 (2016-12-02)

[Description]

Android M上google默认设计是不再随sim卡自适应语言。如想要修改可参考如下方案。

[Solution]

不能更新的原因是在update config时Android M上去掉了对locale改变的update, 按如下方法改成与Android L上一致即可。如果修改之后仍不能自适应语言,请在修改之后再参考FAQ14489 Android L sim卡自适应语言问题 的修改方法。

/frameworks/opt/telephony/src/java/com/android/internal/telephony/MccTable.java

public static void updateMccMncConfiguration(Context context, String mccmnc,

boolean fromServiceState) {

Slog.d(LOG_TAG, "updateMccMncConfiguration mccmnc='" + mccmnc + "' fromServiceState=" + fromServiceState);



if (Build.IS_DEBUGGABLE) {

String overrideMcc = SystemProperties.get("persist.sys.override_mcc");

if (!TextUtils.isEmpty(overrideMcc)) {

mccmnc = overrideMcc;

Slog.d(LOG_TAG, "updateMccMncConfiguration overriding mccmnc='" + mccmnc + "'");

}

}



if (!TextUtils.isEmpty(mccmnc)) {

int mcc, mnc;



String defaultMccMnc = TelephonyManager.getDefault().getSimOperatorNumeric();

Slog.d(LOG_TAG, "updateMccMncConfiguration defaultMccMnc=" + defaultMccMnc);

//Update mccmnc only for default subscription in case of MultiSim.

// if (!defaultMccMnc.equals(mccmnc)) {

// Slog.d(LOG_TAG, "Not a Default subscription, ignoring mccmnc config update.");

// return;

// }



try {

mcc = Integer.parseInt(mccmnc.substring(0,3));

mnc = Integer.parseInt(mccmnc.substring(3));

} catch (NumberFormatException e) {

Slog.e(LOG_TAG, "Error parsing IMSI: " + mccmnc);

return;

}



Slog.d(LOG_TAG, "updateMccMncConfiguration: mcc=" + mcc + ", mnc=" + mnc);

Locale locale = null; //添加这行

if (mcc != 0) {

setTimezoneFromMccIfNeeded(context, mcc);

locale = getLocaleFromMcc(context, mcc); //添加这行

}

if (fromServiceState) {

setWifiCountryCodeFromMcc(context, mcc);

} else {

// from SIM

try {

Configuration config = new Configuration();

boolean updateConfig = false;

if (mcc != 0) {

config.mcc = mcc;

config.mnc = mnc == 0 ? Configuration.MNC_ZERO : mnc;

updateConfig = true;

}

if (locale != null) { //添加这行

config.setLocale(locale); //添加这行

updateConfig = true; //添加这行

} //添加这行



if (updateConfig) {

Slog.d(LOG_TAG, "updateMccMncConfiguration updateConfig config=" + config);

ActivityManagerNative.getDefault().updateConfiguration(config);

} else {

Slog.d(LOG_TAG, "updateMccMncConfiguration nothing to update");

}

} catch (RemoteException e) {

Slog.e(LOG_TAG, "Can't update configuration", e);

}

}

} else {

if (fromServiceState) {

// an empty mccmnc means no signal - tell wifi we don't know

setWifiCountryCodeFromMcc(context, 0);

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值