您的位置:首页 > 移动开发 > Android开发

开机SetupWizard界面时区显示异常

2016-06-04 15:14 465 查看
一、问题现象

1.开机进入设置向导-》时间和日期界面

2.查看默认时区为"GMT+01:00,GMT+00:00",与VDF的需求不一致-》KO

EXPECTED BEHAVIOUR:

OK:"(GMT) Greenwich Mean Time: Dublin, Lisbon, London"

如果定制Dublin,应该显示"Dublin"的时区,如Dublin GMT+01:00

二、问题分析

FWK分析如下,

String zoneNameString = getZoneLongName(locale, tz, now); 这里的 zoneNameString即是后面显示的timezoneName,在getZoneLongName方法有注释说明,

private static String getZoneLongName(Locale locale, TimeZone tz, Date now){

boolean daylight = tz.inDaylightTime(now);

// This returns a name if it can, or will fall back to GMT+0X:00 format. return 

tz.getDisplayName(daylight, TimeZone.LONG, locale);

}

此处调用了TimeZone.java中的getDisplayName方法,在此方法之前同样有相关注释:

* If the name is not available, the result is in the format


* {@code GMT[+-]hh:mm}.

另外在SetupWizard界面dumpsys activity,

Hist #4: ActivityRecord{d95a9cd u0 com.android.settings/.DateTimeSettingsSetupWizard t3}

Intent { act=com.android.setupwizard.DATE_TIME flg=0x4000000 

cmp=com.android.settings/.DateTimeSettingsSetupWizard (has extras) }

ProcessRecord{5bb5e1f 8887:com.android.settings/1000}

发现并非Google官方的SetupWizard,而在flash3等官方的SetupWizard界面中,

Hist #3: ActivityRecord{ecb98d9 u0 

com.google.android.setupwizard/.DateTimeSetupActivity t3}

Intent { act=com.android.setupwizard.DATE_TIME flg=0x4000000 

cmp=com.google.android.setupwizard/.DateTimeSetupActivity (has extras) }

ProcessRecord{e01a17e 3254:com.google.android.setupwizard/u0a96}

选择时区的地方也不是包含所有城市,Google在处理的时候已经说明result可为 null,为null的时候则显示GMT[+ -][hh:mm]格式,

三、解决方案

如果需要解决描述中的问题,建议com.android.settings/.DateTimeSettingsSetupWizard在选择时区 zongName为 空的时候做一些改动,请知悉。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android