最近有个功能要求切换系统语言,通过查询资料找到用反射的方法进行系统设置,但是感觉实现方式太麻烦了,后来看源码发现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);