我的应用程序语言是土耳其语,设备语言是英语。我可以使用下面的代码平稳地设置土耳其语。所有应用程序页面均正确更改。
private void changeLang(String locale) {
Resources res = this.getResources();
DisplayMetrics dm = res.getDisplayMetrics();
Configuration conf = res.getConfiguration();
conf.setLocale(new Locale(locale.toLowerCase()));
res.updateConfiguration(conf, dm);
Configuration newConfig = new Configuration();
newConfig.locale = new Locale(locale.toLowerCase());
onConfigurationChanged(newConfig);
}
但是,当我发送推送通知时,通知文本仍为英文。我调试时看到的语言环境仍然是英语。
public class MyFirebaseMessagingService extends FirebaseMessagingService {
@Override
public void onMessageReceived(RemoteMessage remoteMessage) {
Locale current = getResources().getConfiguration().locale;
//current not change, always english
}
}
为什么服务无法获得真实的语言环境,所以总是获得设备的语言环境。