我正在为我们的应用程序编写一些 Android 测试自动化,这些应用程序已本地化为 18 种语言。
我需要能够以编程方式切换设备上的语言——我并不是说只切换应用程序的语言——我的意思是在 Android 设置中切换实际的设备语言,这样我们的应用程序也会切换。
有什么方法可以通过 MonkeyRunner、Android Debug Bridge 或其他方式来实现吗?理想情况下,我想要一种适用于 android 模拟器和物理设备的方式。
谢谢。
我正在为我们的应用程序编写一些 Android 测试自动化,这些应用程序已本地化为 18 种语言。
我需要能够以编程方式切换设备上的语言——我并不是说只切换应用程序的语言——我的意思是在 Android 设置中切换实际的设备语言,这样我们的应用程序也会切换。
有什么方法可以通过 MonkeyRunner、Android Debug Bridge 或其他方式来实现吗?理想情况下,我想要一种适用于 android 模拟器和物理设备的方式。
谢谢。
最后发现你可以通过我刚刚安装在我的测试机器上并添加到 windows PATH 变量中的Android Debug Bridge来做到这一点。
例如,将设备语言切换为德语的命令是:
adb shell "su -c 'setprop persist.sys.language de; setprop persist.sys.country de; stop; sleep 5; start'
您将需要一个有根设备才能使其正常工作。
您可以像这样更改本地:
Resources res = context.getResources();
// Change locale settings in the app.
DisplayMetrics dm = res.getDisplayMetrics();
android.content.res.Configuration conf = res.getConfiguration();
conf.locale = new Locale(language_code.toLowerCase());
res.updateConfiguration(conf, dm);
您可以编写一个脚本,该脚本将广播发送到adb send broadcast之类的辅助应用程序,该应用程序会更改您在设备内部的配置,例如设备语言,您可以在其中使用 @iSun 的代码。