我有一个支持4种语言的应用程序。我允许用户从这种语言中进行选择,并使用以下代码更改语言:
Locale locale_en = new Locale(locale);
Locale.setDefault(locale_en);
Configuration config_en = new Configuration();
config_en.locale = locale_en;
getBaseContext().getResources()
.updateConfiguration(config_en, getBaseContext()
.getResources().getDisplayMetrics());
recreate();
此外,每天我都会使用AlarmManager
类使用此代码弹出提醒(使用NotificationCompat
):
Intent i = new Intent(context, NavigationActivity.class);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(context, 0, i, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_launcher_v2)
.setContentTitle(context.getString(R.string.notification_title))
.setContentText(context.getString(R.string.notification_text))
.setContentIntent(resultPendingIntent)
.setAutoCancel(true);
int mNotificationId = 001;
NotificationManager mNotifyMgr =
(NotificationManager) context.getSystemService(context.NOTIFICATION_SERVICE);
mNotifyMgr.notify(mNotificationId, mBuilder.build());
问题:通知显示的语言不是用户从我的应用中选择的语言,但它显示在设备的语言中。 我可以使用不同语言的应用程序,但通知始终显示在设备语言中。
答案 0 :(得分:3)
此外,每天我都会使用以下代码在NotificationCompat类中弹出提醒(使用AlarmManager):
您的流程早已终止,因此此代码正在以新的流程运行。您需要在此处应用相同的更新 - Locale
逻辑,以及用户在用户界面中选择语言时。