关于android语言切换后通知栏显示的问题
2014-12-03 22:38
337 查看
改变android语言设置,但是状态栏的快捷功能显示文字不会立即发生改变。
同样,下拉通知栏的文字显示在切换语言后也不会同步更新。
于是在项目中引入:
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED";
解决此问题的关键是在合适的时候和位置添加处理系统在切换语言后发出的广播信息。
比如你有一个IntentFilter,那么你要把ACTION_LOCALE_CHANGED添加到里面。
你要注册一个专门来接收处理系统在切换语言后发出的信息的广播。
例如:
locale信息改变之后,会发广播消息Intent.ACTION_LOCALE_CHANGED,
具体实现在activitymanagerservice.java代码updateConfigurationLocked函数中,
自己写接收代码如下:
1. 接收处理代码:
private BroadcastReceiver mReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context
context, Intent intent) {
Log.v(TAG, "mReceiver onReceive intent.getAction():
"+intent.getAction());
if(intent.getAction().equals(Intent.ACTION_LOCALE_CHANGED))
{
…//此处做你的处理
}
}
};
2.动态注册:
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_LOCALE_CHANGED);
mContext.registerReceiver(mReceiver,
filter);
如果要结合notification,那么还要加上关于NotificationManager的监听和判断这里我就不具体展开关于快捷方式和快捷方式对应的下拉状态栏彼此在语言切换后同步更新的代码,逻辑主要是把上面的广播、ACTION_LOCALE_CHANGED和NotificationManager等知识点相结合。
不知道大家有没有发现:android2.2、2.3中改变android语言设置,状态栏的文字还是不会立即发生改变(例如notification中的提醒),重启后能同步更新。
上面的图是我已经修改了android的源码后的图示,
其实在实际情况android2.2、2.3中中,当你切换语言后有3处地方它们的语言显示是不会更新的,可以测试下。
最下面标注一二三的三张截图
这三处我已经分别在不同的对应代码点上做了处理,所以语言切换后能同步更新显示。
时间有限具体代码就不详细贴出来说明了,分别提示几处关键的代码点位,大家好去深入。
图一:framework/base/packages/SystemUI/com.android.systemui.statusbar 下的CarrierLabel
看看它里面的private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver()也许可以做点什么…
图二:framework/base/packages/SystemUI/com.android.systemui.statusbar 下的StatusBarService
看看它里面的private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver()也许可以做点什么…
图三:framework/base/services/ com.android.server下的NotificationManagerService看看里面的
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver()和private
void updateAdbNotification(boolean adbEnabled) 也许可以做点什么…
不知道大家有没有看图上的豌豆夹,它在语言切换后显示还是没有更新....
同样,下拉通知栏的文字显示在切换语言后也不会同步更新。
于是在项目中引入:
@SdkConstant(SdkConstantType.BROADCAST_INTENT_ACTION)
public static final String ACTION_LOCALE_CHANGED = "android.intent.action.LOCALE_CHANGED";
解决此问题的关键是在合适的时候和位置添加处理系统在切换语言后发出的广播信息。
比如你有一个IntentFilter,那么你要把ACTION_LOCALE_CHANGED添加到里面。
你要注册一个专门来接收处理系统在切换语言后发出的信息的广播。
例如:
locale信息改变之后,会发广播消息Intent.ACTION_LOCALE_CHANGED,
具体实现在activitymanagerservice.java代码updateConfigurationLocked函数中,
自己写接收代码如下:
1. 接收处理代码:
private BroadcastReceiver mReceiver = new BroadcastReceiver(){
@Override
public void onReceive(Context
context, Intent intent) {
Log.v(TAG, "mReceiver onReceive intent.getAction():
"+intent.getAction());
if(intent.getAction().equals(Intent.ACTION_LOCALE_CHANGED))
{
…//此处做你的处理
}
}
};
2.动态注册:
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_LOCALE_CHANGED);
mContext.registerReceiver(mReceiver,
filter);
如果要结合notification,那么还要加上关于NotificationManager的监听和判断这里我就不具体展开关于快捷方式和快捷方式对应的下拉状态栏彼此在语言切换后同步更新的代码,逻辑主要是把上面的广播、ACTION_LOCALE_CHANGED和NotificationManager等知识点相结合。
不知道大家有没有发现:android2.2、2.3中改变android语言设置,状态栏的文字还是不会立即发生改变(例如notification中的提醒),重启后能同步更新。
上面的图是我已经修改了android的源码后的图示,
其实在实际情况android2.2、2.3中中,当你切换语言后有3处地方它们的语言显示是不会更新的,可以测试下。
最下面标注一二三的三张截图
这三处我已经分别在不同的对应代码点上做了处理,所以语言切换后能同步更新显示。
时间有限具体代码就不详细贴出来说明了,分别提示几处关键的代码点位,大家好去深入。
图一:framework/base/packages/SystemUI/com.android.systemui.statusbar 下的CarrierLabel
看看它里面的private final BroadcastReceiver mIntentReceiver = new BroadcastReceiver()也许可以做点什么…
图二:framework/base/packages/SystemUI/com.android.systemui.statusbar 下的StatusBarService
看看它里面的private BroadcastReceiver mBroadcastReceiver = new BroadcastReceiver()也许可以做点什么…
图三:framework/base/services/ com.android.server下的NotificationManagerService看看里面的
private BroadcastReceiver mIntentReceiver = new BroadcastReceiver()和private
void updateAdbNotification(boolean adbEnabled) 也许可以做点什么…
不知道大家有没有看图上的豌豆夹,它在语言切换后显示还是没有更新....
相关文章推荐
- 关于android语言切换后通知栏显示的问题
- android语言切换后通知栏显示的问题
- Android 关于RecyclerView瀑布流显示图片时Item切换、闪烁等问题优化
- 关于Android应用内多语言切换的问题
- 关于Android Notification.Builder不显示通知的问题
- android 4.0以上操作系统关于多语言切换bug的修复
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- 关于Android实现语言切换的经验总结
- 关于Android软件盘的显示与隐藏的问题
- 上一篇关于android通知栏点击回不到应用程序的问题进一步研究
- android语言切换问题
- Android开发——关于全屏显示问题
- 关于android与php传递数据,引号显示&quot的问题
- Android 关于在ScrollView中加上一个ListView,ListView内容显示不完全(总是显示第一项)的问题的两种简单的解决方案
- Android 关于显示键盘,布局错乱网上顶的问题
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- 关于下载xbmc后打开Android 源码时的一个思考问题?兼各平台安装xbmc 的中文显示
- android 关于 ScrollView嵌套GridView,ListView 显示和滑动的问题
- Android关于后台下载前台通知更新进度条的问题
- XCode关于多视图切换不显示UIButton等控件的问题