微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 手机设计讨论 > MTK手机平台交流 > 插入俄罗斯SIM卡获取时区不对

插入俄罗斯SIM卡获取时区不对

时间:10-02 整理:3721RD 点击:
[DESCRIPTION]

手机插入俄罗斯SIM卡,发现根据MCC获取的时区不是Moscow,

如KK版本插入俄罗斯卡,发现当前时区是Europe/Kaliningrad,L版本则是Europe/Andorra

[SOLUTION]

这是因为系统在通过MCC获取时区时是先获取sim卡所属国家所有的时区列表,然后把列表的
第一个作为返回值。

因为Moscow不是第一位,因此出现上面这种情况,

一般从log中会有这样的下面的关键字打出,

KK版本:
06-03 10:05:27.069 864 864 D GSM : [GSMSST0] pollStateDone: try to fixTimeZone mcc:250 mccTz:Europe/Kaliningrad
06-03 10:05:27.069 864 864 D GSM : [GsmSST0] pollStateDone: using default TimeZone
06-03 10:05:27.069 864 864 D GSM : [GsmSST0] pollStateDone: zone != null zone.getID=Europe/Kaliningrad

android L:
04-14 05:21:51.436 3596 3596 D GSM : [GsmSST1] pollStateDone: try to fixTimeZone mcc:250 mccTz:Europe/Andorra
zone.getID=Europe/Andorra
04-14 05:21:51.436 3596 3596 D GSM : [GsmSST1] pollStateDone: using default TimeZone
04-14 05:21:51.436 3596 3596 D GSM : [GsmSST1] pollStateDone: zone != null zone.getID=Europe/Andorra
这个问题可以修改defaultTimeZoneForMcc返回值解决如下:
MccTable.javaalps\php?mod=tag&id=6090" target="_blank" class="relatedlink">Frameworks\opt\telephony\src\java\com\android\internal\telephony
public static String defaultTimeZoneForMcc(int mcc) {
MccEntry entry;
entry = entryForMcc(mcc);
if (entry == null || entry.mIso == null) {
return null;
} else {
Locale locale;
if (entry.mLanguage == null) {
locale = new Locale("", entry.mIso);
Slog.d(LOG_TAG, "defaultTimeZoneForMcc: mcc=" + mcc + ", mIso=" + entry.mIso);
} else {
locale = new Locale(entry.mLanguage, entry.mIso);
Slog.d(LOG_TAG, "updateMccMncConfiguration: mcc=" + mcc +
", mLanguage=" + entry.mLanguage +
", mIso=" + entry.mIso);
}
String[] tz = TimeZoneNames.forLocale(locale);
if (tz.length == 0) return null;
if(mcc==250) return "Europe/Moscow";////add this line
return tz[0];

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top