mirror of
https://github.com/topjohnwu/Magisk.git
synced 2025-10-16 11:26:58 +00:00
Better method to change Locale
This commit is contained in:
@@ -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 {
|
|||||||
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 {
|
|||||||
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);
|
||||||
|
@@ -1,6 +1,7 @@
|
|||||||
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;
|
|||||||
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 {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
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 {
|
|||||||
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(Context context, Locale locale) {
|
||||||
|
Configuration config = new Configuration(context.getResources().getConfiguration());
|
||||||
|
config.setLocale(locale);
|
||||||
|
return context.createConfigurationContext(config);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Context getLocaleContext(Locale locale) {
|
public static Context getLocaleContext(Locale locale) {
|
||||||
Configuration config = new Configuration(App.self.getBaseContext().getResources().getConfiguration());
|
return getLocaleContext(App.self.getBaseContext(), locale);
|
||||||
config.setLocale(locale);
|
|
||||||
return App.self.createConfigurationContext(config);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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.
|
|||||||
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
|
|||||||
|
|
||||||
@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
|
||||||
|
Reference in New Issue
Block a user