android 系统语言改变广播,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();

}

}

界面更新处理得比较粗糙,还望大神指教!

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值