最近有个功能要求切换系统语言,通过查询资料找到用反射的方法进行系统设置,但是感觉实现方式太麻烦了,后来看源码发现 LocalePicker 这个类里面有 updateLocale 方法能够轻松完成系统语言切换~。
首先使用该方法需要系统权限:
<uses-permission android:name="android.permission.CHANGE_CONFIGURATION"
tools:ignore="ProtectedPermissions" />
再就是具体实现方式~
public void setLanguage(Locale mLocale) {
try {
Class localPicker = Class.forName("com.android.internal.app.LocalePicker");
Method updateLocale = localPicker.getDeclaredMethod("updateLocale",
Locale.class);
updateLocale.invoke(null,mLocale);
} catch (ClassNotFoundException | NoSuchMethodException | InvocationTargetException
| IllegalAccessException e) {
e.printStackTrace();
}
}
然后通过如下调用方式就能实现系统语言切换咯!
setLanguage(Locale.ENGLISH);