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://scyanting.com/article/dpjjdo.html