Android应用程序的区域设置被程序修改,但NotificationCompact在设备语言中显示消息。

4

我有一个支持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();

另外,每天我使用AlarmManagerNotificationCompat类弹出一条提醒,以下是代码:

    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());

问题出在: 我的应用程序的通知不会显示用户选择的语言,而是显示设备的语言。我能够使用不同的语言来操作应用程序,但通知总是以设备语言显示。

1个回答

3
此外,每天我都会使用AlarmManager和NotificationCompat类弹出一个提醒,代码如下:
您的进程早已被终止,所以此代码在一个新的进程中运行。您需要在此处应用与用户在UI中选择语言时相同的“更新语言环境”的逻辑。

谢谢CommonsWare!它有效!我在sharedPreference中保存了所选的语言环境,并在广播接收器中使用相同的语言环境逻辑。 - Juan Saravia

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接