android10.0(Q) android11(R) 时区相关问题

简介: android10.0(Q) android11(R) 时区相关问题

一、默认关闭自动更新时区


将自动更新时区开关 def_auto_time_zone 的值设置为 false。

文件路径:platform/frameworks/base/packages/SettingsProvider/res/values/defaults.xml


二、自动更新时区打开,设置默认时区不生效问题


当你 persist.sys.timezone 配置了这个没用,那可能和设备驻留到紧急网络上,会根据网络上报的国家码进行匹配并更新时区


2.1 android10.0(Q) 解决办法


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

 import java.io.FileDescriptor;
 import java.io.PrintWriter;
+//add
+import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState;
+import com.android.internal.telephony.uicc.UiccCardApplication;
+//end
+
 /**
  * {@hide}
  */
@@ -394,6 +399,12 @@ public final class NewNitzStateMachine implements NitzStateMachine {
         if (DBG) {
             Rlog.d(LOG_TAG, "setAndBroadcastNetworkSetTimeZone: zoneId=" + zoneId);
         }
+        //add
+        UiccCardApplication uiccApp = mPhone.getUiccCardApplication();
+        if (uiccApp == null || uiccApp.getState() == AppState.APPSTATE_UNKNOWN) {
+            Rlog.d(LOG_TAG, "Not to set network time zone due to sim absent");
+            return;
+        }//end
         mTimeServiceHelper.setDeviceTimeZone(zoneId);
         if (DBG) {
             Rlog.d(LOG_TAG,



frameworks/opt/telephony/src/java/com/android/internal/telephony/nitz/TimeServiceHelperImpl.java


+import com.android.internal.telephony.GsmCdmaPhone;
+import com.android.internal.telephony.uicc.IccCardApplicationStatus.AppState;
+import com.android.internal.telephony.uicc.UiccCardApplication;
@@ -40,6 +43,7 @@ import java.util.Objects;
 public final class TimeServiceHelperImpl implements TimeServiceHelper {
     private final int mSlotIndex;
+    private Phone mPhone;
     private final TimeDetector mTimeDetector;
     private final TimeZoneDetector mTimeZoneDetector;
@@ -56,6 +60,7 @@ public final class TimeServiceHelperImpl implements TimeServiceHelper {
     public TimeServiceHelperImpl(@NonNull Phone phone) {
         mSlotIndex = phone.getPhoneId();
+        mPhone = phone;
         Context context = Objects.requireNonNull(phone.getContext());
         mTimeDetector = Objects.requireNonNull(context.getSystemService(TimeDetector.class));
         mTimeZoneDetector =
@@ -79,6 +84,11 @@ public final class TimeServiceHelperImpl implements TimeServiceHelper {
     public void maybeSuggestDeviceTimeZone(@NonNull TelephonyTimeZoneSuggestion newSuggestion) {
         Objects.requireNonNull(newSuggestion);
+        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;
+        }
         TelephonyTimeZoneSuggestion oldSuggestion = mLastSuggestedTimeZone;
         if (shouldSendNewTimeZoneSuggestion(oldSuggestion, newSuggestion)) {
             mTimeZoneLog.log("Suggesting time zone update: " + newSuggestion);


目录
相关文章
|
1月前
|
Java Android开发
Android 设置系统时区的源码追踪
Android 设置系统时区的源码追踪
23 1
|
Android开发
Android 修改系统时区导致SimpleDateFormat无法输出正确时间
Android 修改系统时区导致SimpleDateFormat无法输出正确时间
197 0
|
Android开发
Android系统移植与调试之------->如何修改Android的默认语言、默认时区
修改device/other/TBDG1073/ system.prop文件  1、设置默认语言 找到device/other/TBDG1073/ system.
1234 0
|
Android开发 Linux
android默认系统日期、时间、时区更改
 android默认系统日期、时间、时区更改       做android平台,经常会遇到产品需要更改系统默认时区日期时间的问题。android更改时区相对比较容易实现,网上也有很多资料,直接设置一个属性即可,例如设置上海东八区,persist.sys.timezone=Asia/Shanghai。
1856 0
|
7天前
|
安全 Java Android开发
安卓开发中的新趋势:Kotlin与Jetpack的完美结合
【6月更文挑战第20天】在不断进化的移动应用开发领域,Android平台以其开放性和灵活性赢得了全球开发者的青睐。然而,随着技术的迭代,传统Java语言在Android开发中逐渐显露出局限性。Kotlin,一种现代的静态类型编程语言,以其简洁、安全和高效的特性成为了Android开发中的新宠。同时,Jetpack作为一套支持库、工具和指南,旨在帮助开发者更快地打造优秀的Android应用。本文将探讨Kotlin与Jetpack如何共同推动Android开发进入一个新的时代,以及这对开发者意味着什么。
|
2天前
|
Java 开发工具 Android开发
探索Android与iOS开发的差异:平台选择对项目成功的影响
在移动应用开发的广阔天地中,Android和iOS两大平台各自占据着半壁江山。本文将深入探讨这两个平台在开发过程中的关键差异点,包括编程语言、开发工具、用户界面设计、性能优化以及市场覆盖等方面。通过对这些关键因素的比较分析,旨在为开发者提供一个清晰的指南,帮助他们根据项目需求和目标受众做出明智的平台选择。
|
2天前
|
编解码 Android开发 iOS开发
深入探索Android与iOS开发的差异与挑战
【6月更文挑战第24天】在移动应用开发的广阔舞台上,Android和iOS两大操作系统扮演着主角。它们各自拥有独特的开发环境、工具集、用户基础及市场策略。本文将深度剖析这两个平台的开发差异,并探讨开发者面临的挑战,旨在为即将踏入或已在移动开发领域奋斗的开发者提供一份实用指南。
22 13
|
1天前
|
监控 Android开发 iOS开发
探索Android与iOS开发的差异:平台、工具和用户体验的比较
【6月更文挑战第25天】在移动应用开发的广阔天地中,Android和iOS两大平台各领风骚,它们在开发环境、工具选择及用户体验设计上展现出独特的风貌。本文将深入探讨这两个操作系统在技术实现、市场定位和用户交互方面的关键差异,旨在为开发者提供一个全景式的视图,帮助他们在面对项目决策时能够更加明智地选择适合自己项目需求的平台。
|
4天前
|
XML Java 开发工具
Android Studio开发Android TV
【6月更文挑战第19天】
|
1天前
|
缓存 测试技术 Shell
详细解读Android开发命令行完全攻略
详细解读Android开发命令行完全攻略