Commit 749df5da authored by topjohnwu's avatar topjohnwu

Better method to change Locale

parent af88b7c8
...@@ -28,8 +28,6 @@ public class App extends ContainerApp { ...@@ -28,8 +28,6 @@ public class App extends ContainerApp {
public MagiskDB mDB; public MagiskDB mDB;
public RepoDatabaseHelper repoDB; public RepoDatabaseHelper repoDB;
private Resources mResource;
static { static {
Shell.Config.setFlags(Shell.FLAG_MOUNT_MASTER | Shell.FLAG_USE_MAGISK_BUSYBOX); Shell.Config.setFlags(Shell.FLAG_MOUNT_MASTER | Shell.FLAG_USE_MAGISK_BUSYBOX);
Shell.Config.verboseLogging(BuildConfig.DEBUG); Shell.Config.verboseLogging(BuildConfig.DEBUG);
...@@ -41,7 +39,6 @@ public class App extends ContainerApp { ...@@ -41,7 +39,6 @@ public class App extends ContainerApp {
protected void attachBaseContext(Context base) { protected void attachBaseContext(Context base) {
super.attachBaseContext(base); super.attachBaseContext(base);
self = this; self = this;
mResource = base.getResources();
prefs = PreferenceManager.getDefaultSharedPreferences(this); prefs = PreferenceManager.getDefaultSharedPreferences(this);
mDB = new MagiskDB(this); mDB = new MagiskDB(this);
...@@ -51,15 +48,6 @@ public class App extends ContainerApp { ...@@ -51,15 +48,6 @@ public class App extends ContainerApp {
LocaleManager.setLocale(this); LocaleManager.setLocale(this);
} }
@Override
public Resources getResources() {
return mResource;
}
public void setResources(Resources res) {
mResource = res;
}
@Override @Override
public void onConfigurationChanged(Configuration newConfig) { public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig); super.onConfigurationChanged(newConfig);
......
package com.topjohnwu.magisk.utils; package com.topjohnwu.magisk.utils;
import android.content.Context; import android.content.Context;
import android.content.ContextWrapper;
import android.content.res.Configuration; import android.content.res.Configuration;
import android.content.res.Resources; import android.content.res.Resources;
import android.os.Build; import android.os.Build;
...@@ -8,6 +9,7 @@ import android.os.Build; ...@@ -8,6 +9,7 @@ import android.os.Build;
import com.topjohnwu.magisk.App; import com.topjohnwu.magisk.App;
import com.topjohnwu.magisk.Config; import com.topjohnwu.magisk.Config;
import com.topjohnwu.superuser.Shell; import com.topjohnwu.superuser.Shell;
import com.topjohnwu.superuser.internal.InternalUtils;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
...@@ -86,7 +88,7 @@ public class LocaleManager { ...@@ -86,7 +88,7 @@ public class LocaleManager {
} }
} }
public static void setLocale(App app) { public static void setLocale(ContextWrapper wrapper) {
String localeConfig = Config.get(Config.Key.LOCALE); String localeConfig = Config.get(Config.Key.LOCALE);
if (localeConfig.isEmpty()) { if (localeConfig.isEmpty()) {
locale = defaultLocale; locale = defaultLocale;
...@@ -94,13 +96,17 @@ public class LocaleManager { ...@@ -94,13 +96,17 @@ public class LocaleManager {
locale = forLanguageTag(localeConfig); locale = forLanguageTag(localeConfig);
} }
Locale.setDefault(locale); Locale.setDefault(locale);
app.setResources(getLocaleContext(locale).getResources()); InternalUtils.replaceBaseContext(wrapper, getLocaleContext(locale));
} }
public static Context getLocaleContext(Locale locale) { public static Context getLocaleContext(Context context, Locale locale) {
Configuration config = new Configuration(App.self.getBaseContext().getResources().getConfiguration()); Configuration config = new Configuration(context.getResources().getConfiguration());
config.setLocale(locale); config.setLocale(locale);
return App.self.createConfigurationContext(config); return context.createConfigurationContext(config);
}
public static Context getLocaleContext(Locale locale) {
return getLocaleContext(App.self.getBaseContext(), locale);
} }
public static String getString(Locale locale, @StringRes int id) { public static String getString(Locale locale, @StringRes int id) {
......
...@@ -63,8 +63,7 @@ public class ApplicationAdapter extends RecyclerView.Adapter<ApplicationAdapter. ...@@ -63,8 +63,7 @@ public class ApplicationAdapter extends RecyclerView.Adapter<ApplicationAdapter.
boolean ah = hideList.contains(a.packageName); boolean ah = hideList.contains(a.packageName);
boolean bh = hideList.contains(b.packageName); boolean bh = hideList.contains(b.packageName);
if (ah == bh) { if (ah == bh) {
return Utils.getAppLabel(a, pm).toLowerCase() return Utils.getAppLabel(a, pm).compareToIgnoreCase(Utils.getAppLabel(b, pm));
.compareTo(Utils.getAppLabel(b, pm).toLowerCase());
} else if (ah) { } else if (ah) {
return -1; return -1;
} else { } else {
......
...@@ -53,10 +53,7 @@ public abstract class BaseActivity extends AppCompatActivity implements Topic.Au ...@@ -53,10 +53,7 @@ public abstract class BaseActivity extends AppCompatActivity implements Topic.Au
@Override @Override
protected void attachBaseContext(Context base) { protected void attachBaseContext(Context base) {
super.attachBaseContext(base); super.attachBaseContext(LocaleManager.getLocaleContext(base, LocaleManager.locale));
Configuration config = base.getResources().getConfiguration();
config.setLocale(LocaleManager.locale);
applyOverrideConfiguration(config);
} }
@Override @Override
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment