Android M中切换语言后自动规则选项内容不更新问题

一、现象:

切换语言,进入 设置——提示音和通知——请勿打扰——自动规则 ,三个规则选项翻译没有更新到切换的语言。


二、分析结论:

这三个字符串是通过ZenModeHelper.java中的appendDefaultScheduleRules()和appendDefaultEventRules()两个方法获取的:

rule1.name = mContext.getResources().getString(R.string.zen_mode_default_weeknight_name);

rule2.name = mContext.getResources().getString(R.string.zen_mode_default_weekends_name);

rule.name = mContext.getResources().getString(R.string.zen_mode_default_events_name);

appendDefaultScheduleRules()和appendDefaultEventRules()两个方法是在ZenModeHelper构造函数中调用,ZenModeHelper对象是在NotificationManagerService.java中初始化,但是NotificationManagerService这个service只在开机的时候启动一次,切换语言并不会让这个service关闭再重启,所以不会重新初始化ZenModeHelper对象,也就不会获取切换语言之后的字符串,必须重启手机这三个字符串的翻译才生效。

三、解决方案:

目前Nexus5也有同样的问题,属于Google原生的问题,如果一定要解决,那就得让ZenModeHelper对象重新初始化,或者把NotificationManagerService重新启动,或者在某些地方调用appendDefaultScheduleRules()和appendDefaultEventRules()这两个方法。


This issue is Google Native issue,zen_mode_default_weeknights_name,
zen_mode_default_weekends_name and zen_mode_default_events_name, these
three strings were acquired by method appendDefaultScheduleRules() and
appendDefaultEventRules() when ZenModeHelper object initialization, but
ZenModeHelper object created in NotificationManagerService, and
NotificationManagerService only start at device
boot,NotificationManagerService will not restart when switch language,
so if want these three strings become effective, must reboot your
device.

[PR-2121896]

LocalePicker.java   可以在这里监听语言的变化
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值