默认时区配置不生效

配置的默认时区不生效,通常有如下几种情况:

1,自动更新时区默认开启,插卡开机,有网络连接,开机后自动更新了时区,导致默认时区不生效;

2,自动更新时区默认开启,不插卡开机,不连接网络,开机后自动更新了时区,导致默认时区不生效;

3,设置的默认时区不在支持的时区列表中,显示了其他时区,导致默认时区不生效;

4,系统带有Google开机向导。Google开机向导中有时区设置界面,如果设置的默认时区在其列表中不存在,开机向导会显示其他时区,这时如果点击下一步,会将开机向导界面显示的时区设置到系统中,导致默认时区不生效;

5,seLinux权限异常,导致默认时区不生效。

 

  • 关于上面的5种情况,有些可以修改,有些无法修改,具体如下:

1, 自动更新时区默认开启情况下,通过网络更新时区是正常的。如果要让其不更新时区,可以默认关闭自动更新时区开关。具体如下:

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

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

2, 自动更新时区默认开启情况下,不插卡开机,不连接网络,设备也会驻留到紧急网络上,此时会根据网络上报的国家码进行匹配并更新时区。所以其修改方法与第1条是一样的,关闭自动更新时区开关。通常客户会希望保持自动更新时区开关打开,在不插sim卡的情况下开机不更新时区,如果要实现这种功能,需要如下修改:

在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;

 

+    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;

+    }

3, 系统支持的默认时区列表在tzlookup.xml文件中

文件路径:system/timezone/output_data/android/tzlookup.xml

如果是tzlookup.xml中没有的时区id,配置默认时区是无效的,因为系统不支持。

4, Google开机向导应用维护的时区列表是独立的,与系统支持的时区列表可能不一致。而且Google开机向导应用是闭源的,所以无法修改。

5, 因为是权限问题,所以只需要添加相应的权限即可。具体修改如下:

device/sprd/XXX/common/sepolicy/vendor_init.te

+ allow vendor_init exported_system_prop:property_service { set }

说明:如果是因为权限问题不生效,kernel log中会有如下信息打印,可以作为参考:

……selinux: avc:  denied  { set } for property=persist.sys.timezone pid=1 uid=0 gid=0 scontext=u:r:vendor_init:s0 tcontext=u:object_r:exported_system_prop:s0 tclass=property_service permissive=0

……init: Unable to set property 'persist.sys.timezone' to 'Europe/Amsterdam' in property file '/vendor/build.prop': SELinux permission check failed

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值