我在本文中发现的有趣的是以编程方式更改整个系统语言。
How to change android system locale
它显示了两种方式:
1-使用Class 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权限对我来说不是问题。
我们如何以编程方式更改系统语言?
答案 0 :(得分:0)
您必须检查新API级别的新实现,并根据更改调整代码。
您可以在此处查看源代码: https://github.com/android/platform_frameworks_base/blob/master/core/java/android/app/ActivityManagerNative.java