Изменить язык системы локали через ADB, начиная с Android 6.0

В целях ручного тестирования пользовательского интерфейса на устройствах Android 6.0 и 7.0 я использую ярлык для доступа к языковым настройкам через ADB, а затем вручную выбираю один из трех языков ar_DZ, en_GB, fr_FR.

adb shell am start -n com.android.settings/.Settings\$LocalePickerActivity

Вопрос: можно ли автоматизировать задачу смены локали системы (без рута) через ADB?

Ответы (1)

Это решение не использует напрямую, но достигает конечного результата, используя автоматизацию на нерутированных устройствах.

- предпочтительный выбор для меня, поскольку он прост и свободен до 5 макросов.

Предварительные шаги

  • Установите Macrodroid и предоставьте все разрешения, которые он запрашивает

  • Действия, требуемые OP, требуют root. Macrodroid предлагает способ сделать это без рута, используя методы , описанные здесь . По сути, это предоставление WRITE_SECURE_SETTINGSи CHANGE_CONFIGURATIONвыполнение следующих команд

adb shell pm grant com.arlosoft.macrodroid android.permission.WRITE_SECURE_SETTINGS

с последующим

adb shell pm grant com.arlosoft.macrodroid android.permission.CHANGE_CONFIGURATION

Перезагрузитесь, чтобы убедиться, что команды обновлены в приложении.

Создание макросов и тестирование

  • Триггер: выберите пустой триггер

  • Действие: Установить язык → Французский → Франция (соответствует fr_FR)

  • Ограничения: оставьте пустым

  • Протестируйте его, выбрав Test Macro из трехточечного меню макроса. Язык системы должен измениться на французский. Сохраните макрос, например , французский . Создайте два похожих макроса для двух других вариантов.

Создание ярлыка на главном экране

Обычно, если вы долго нажимаете на домашний экран, вы найдете значок для коллекции виджетов. Среди них вы найдете виджеты Macrodroid. Одним из них являются ярлыки Macrodroid . Перетащите его на главный экран, он спросит вас, какой макрос он должен быть назначен, при отображении списка макросов. Выберите макрос и переименуйте виджет, например, французский. При нажатии на этот виджет выполняется соответствующий макрос. Повторите для других макросов. Если вы используете пользовательскую программу запуска, вам нужно будет найти, как получить доступ к коллекции виджетов.

Примечания

  • Выбор языка в раскрывающемся меню может быть реализован, но для этого потребуется другой макрос. Кроме того, этот метод с одним ярлыком на рабочем столе для каждого языка делает его простым и легким в отладке.

  • Этот метод не будет работать на Oreo (вы не получаете действие с установленным языком , возможно, из-за того, как оно реализовано)

Да, у меня есть проблема с ярлыком, потому что он недоступен в настройках виджета, но я обошел это с помощью приложения для создания ярлыков, я думаю, что это решение является самым быстрым для изменения локали до сих пор, я приму его, если не будет лучшего решение без сторонних приложений. потому что вопрос был задан только об использовании ADB.
У меня проблема с выравниванием RtL в настройках с арабским языком, возможно, обновление оболочки не реализовано, как LocalePickerActivity.
Вопрос android.stackexchange.com/q/105258/131553 , касающийся арабского языка, был исправлен Google в Nougat, и у текущего устройства нет проблем с RtL, но только на этот раз при использовании Macrodroid.