Android切换系统语言,自动更新应用界面显示语言-创新互联
需要完成的功能是点击指定按钮后修改系统语言,并让应用跟随系统切换语言

private void switchLanguage(){
IActivityManager am = ActivityManagerNative.getDefault();
Configuration config = null ;
try {
config = am.getConfiguration();
//更改系统语言
if (config.locale.equals(Locale.SIMPLIFIED_CHINESE)) {
config.locale = Locale.ENGLISH;
}else {
config.locale = Locale.SIMPLIFIED_CHINESE;
}
//更新系统设置
am.updateConfiguration(config);
// BackupManager.dataChanged("com.android.providers.settings");
} catch (RemoteException e) {
e.printStackTrace();
}
System.out.println(config.locale);
// updateUI();
}添加权限
上面的方法已经完成了修改系统的语言,打开系统设置界面
adb shell am start -n com.android.settings/.Settings
可以发现设置界面的语言已经跟随系统更改了,如果要当前应用更改语言显示还需要一些步骤
在Activity的属性中添加
android:configChanges="locale"
网上很多文章的做法都到此为止,笔者到此步并不能自动更新界面语言,原因是界面未更新
为应用添加一个更新界面的操作,在更改系统语言后更新界面,最初测试发现可以切换界面语言。进一步测试发现,应用界面的语言与系统当前的语言相反,也就是慢一拍,就我上面的例子说,当系统语言为中文是,我的应用显示英文;系统语言为英文时,我的应用显示的中文。
到系统设置中更改系统语言时发现,选择语言后大概2s后,界面才会更新
猜测应该使用广播,查找一下发现有资料介绍
于是注册广播
public static MainActivity activity = null;//在MainActivity初始化传递应用过来
@Override
public void onReceive(Context context, Intent intent) {
if (intent.getAction().equals(Intent.ACTION_LOCALE_CHANGED)){
activity.initView();
}
}界面更新处理得比较粗糙,还望大神指教!
另外有需要云服务器可以了解下创新互联scvps.cn,海内外云服务器15元起步,三天无理由+7*72小时售后在线,公司持有idc许可证,提供“云服务器、裸金属服务器、高防服务器、香港服务器、美国服务器、虚拟主机、免备案服务器”等云主机租用服务以及企业上云的综合解决方案,具有“安全稳定、简单易用、服务可用性高、性价比高”等特点与优势,专为企业上云打造定制,能够满足用户丰富、多元化的应用场景需求。
网页标题:Android切换系统语言,自动更新应用界面显示语言-创新互联
转载来源:http://www.jxjierui.cn/article/dpjjdo.html


咨询
建站咨询
