但如何在应用里自己实现?搜索过发现网上有如下的做法:
Resources res = getResources();
Configuration config = res.getConfiguration();
config.locale = locale;
DisplayMetrics dm = res.getDisplayMetrics();
res.updateConfiguration(config, dm);
亲测,不成功。好吧,程序员又到了自力更生的时候了。下面开始讲应用多语言切换的三种方法。
先上效果图:
前两种方法的原理即在应用里实现“选择语言”。通过查看源码,其核心代码为:
IActivityManager iActMag = ActivityManagerNative.getDefault();
try {
Configuration config = iActMag.getConfiguration();
config.locale = locale;
// 此处需要声明权限:android.permission.CHANGE_CONFIGURATION
// 会重新调用 onCreate();
iActMag.updateConfiguration(config);
} catch (RemoteException e) {
e.printStackTrace();
}
PS:感谢 曾阳 的帮助。
可以发现IActivityManager与ActivityManagerNative都是非公开类。如何调用?第一种是API欺骗,第二种是使用Java反射机制。
1. AP