Что я нашел в этой статье, было интересно о программном изменении системного языка.Программный язык с программным изменением - Android
How to change android system locale
Это показывает 2 способа:
1- Использование Reflection класса для доступа к API:
try {
Class<?> activityManagerNative = Class.forName("android.app.ActivityManagerNative");
Object am=activityManagerNative.getMethod("getDefault").invoke(activityManagerNative);
Object config=am.getClass().getMethod("getConfiguration").invoke(am);
config.getClass().getDeclaredField("locale").set(config, Locale.US);
config.getClass().getDeclaredField("userSetLocale").setBoolean(config, true);
am.getClass().getMethod("updateConfiguration",android.content.res.Configuration.class).invoke(am,config);
}catch (Exception e) {
e.printStackTrace();
}
2- Используя поддельный класс в пути сборки
package android.app;
import android.content.res.Configuration;
import android.os.RemoteException;
public interface IActivityManager {
public abstract Configuration getConfiguration() throws RemoteException;
public abstract void updateConfiguration (Configuration configuration) throws RemoteException;
}
И
package android.app;
public abstract class ActivityManagerNative implements IActivityManager {
public static IActivityManager getDefault(){
return null;
}
}
Детали, объясняемые в статье. Это работает на android pre 4.2. Однако я тестировал оба пути на Android 4.4.2, и это не сработало.
Мое приложение уже должно иметь разрешение на использование root. поэтому разрешение root не является проблемой для меня.
Как мы можем программно изменить системный язык?
вы имели в виду ввести программно вместо прагматично? –
@ cricket_007 OMG я использовал автокоррекцию google chrome – MBH
Я имею в виду, это «работает», если вы имели в виду «разумным способом» :) –