diff --git a/briar-android/src/main/java/org/briarproject/bramble/account/BriarAccountManager.java b/briar-android/src/main/java/org/briarproject/bramble/account/BriarAccountManager.java index eb1e2faaa..9006dc9dc 100644 --- a/briar-android/src/main/java/org/briarproject/bramble/account/BriarAccountManager.java +++ b/briar-android/src/main/java/org/briarproject/bramble/account/BriarAccountManager.java @@ -25,7 +25,7 @@ class BriarAccountManager extends AndroidAccountManager { public void deleteAccount() { synchronized (stateChangeLock) { super.deleteAccount(); - Localizer.reinitialize(); + Localizer.reinitialize(appContext); UiUtils.setTheme(appContext, appContext.getString(R.string.pref_theme_light_value)); } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/Localizer.java b/briar-android/src/main/java/org/briarproject/briar/android/Localizer.java index f4eef4fc7..358bb2c2f 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/Localizer.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/Localizer.java @@ -44,9 +44,11 @@ public class Localizer { } // Reinstantiate the Localizer with the system locale - public static synchronized void reinitialize() { - if (INSTANCE != null) + public static synchronized void reinitialize(Context appContext) { + if (INSTANCE != null) { INSTANCE = new Localizer(INSTANCE.systemLocale, null); + INSTANCE.forceLocale(appContext); + } } // Get the current instance. @@ -84,6 +86,18 @@ public class Localizer { return context; } + // Forces the update of the resources through the deprecated API. + // Necessary on API >= 17 to update the foreground notification if the + // account was deleted. + public void forceLocale(Context context) { + Resources res = context.getResources(); + Configuration conf = res.getConfiguration(); + updateConfiguration(conf, locale); + //noinspection deprecation + // Use the old API on < 17 + res.updateConfiguration(conf, res.getDisplayMetrics()); + } + private void updateConfiguration(Configuration conf, Locale locale) { if (SDK_INT >= 17) { conf.setLocale(locale);