通常关闭自动更新时区后设置默认的时区,联网时区是不会变化的
frameworks/base/packages/SettingsProvider/res/values/defaults.xml
将自动更新时区开关def_auto_time_zone的值设置为false即可
但是现在遇到关闭后时区还是会自动更新,首先我们得排除
系统支持的默认时区列表tzlookup.xml文件中
文件路径:system/timezone/output_data/android/tzlookup.xml
如果是tzlookup.xml中没有的时区id,配置默认时区是无效的,因为系统不支持。
同时客户需要在自动更新打开的情况下,不自动更新时区使用设置的默认时区
android 10.0如下修改
frameworks/opt/telephony/src/java/com/android/internal/telephony/NewNitzStateMachine.java文件的setAndBroadcastNetworkSetTimeZone方法开头添加如下代码,对应的类也需要导入:
import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState;
import com.android.internal.telephony.uicc.UiccCardApplication;
private void setAndBroadcastNetworkSetTimeZone(String zoneId) {
//add by chenzeqi
UiccCardApplication uiccApp = mPhone.getUiccCardApplication();
if (uiccApp == null || uiccApp.getState() == IccCardApplicationStatus.AppState.APPSTATE_UNKNOWN) {
Rlog.d(LOG_TAG, "Not to set network time zone due to sim absent.");
return;
//end
}
android 11.0如下修改
frameworks/opt/telephony/src/java/com/android/internal/telephony/nitz/TimeServiceHelperImpl.java文件的maybeSuggestDeviceTimeZone方法添加
import com.android.internal.telephony.GsmCdmaPhone;
import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState;
import com.android.internal.telephony.uicc.UiccCardApplication;
public void maybeSuggestDeviceTimeZone(@NonNull TelephonyTimeZoneSuggestion newSuggestion) {
Objects.requireNonNull(newSuggestion);
//add by chenzeqi
UiccCardApplication uiccApp = ((GsmCdmaPhone) mPhone).getUiccCardApplication();
if (uiccApp == null || uiccApp.getState() == AppState.APPSTATE_UNKNOWN) {
mTimeLog.log("Not to set network time zone due to sim absent.");
return;
//end
}