Cambiar el idioma del dispositivo a través de ADB

Quiero cambiar el idioma a través de ADB. Lo bash:

adb shell setprop persist.sys.language fr;setprop persist.sys.country CA;stop;sleep 5;start 

pero obtengo errores:

 setprop: command not found stop: missing job name Try `stop --help' for more information. start: missing job name Try `start --help' for more information. 

¿qué está mal? Quiero hacer esto en un dispositivo físico

Sus errores no tienen nada que ver con adb . Simplemente te falta entender cómo tu caparazón local procesa tu comando. Lo que está haciendo es ejecutar estos comandos localmente (en su PC):

 adb shell setprop persist.sys.language fr setprop persist.sys.country CA stop sleep 5 start 

y los mensajes de error que ve son del shell local (es decir, no hay ningún ejecutable setprop en su sistema y los comandos start y stop tienen parámetros no opcionales).

el comando correcto sería

 adb shell "setprop persist.sys.language fr; setprop persist.sys.country CA; setprop ctl.restart zygote" 

o en versiones de Android más recientes:

 adb shell "setprop persist.sys.locale fr-CA; setprop ctl.restart zygote" 

Puede cambiar la configuración regional / idioma para fines de prueba sin enrutar el dispositivo, también en dispositivos más nuevos (4.2+). Debe crear una aplicación que cambie la configuración regional del dispositivo . O bien, puede usar una aplicación de ayuda, por ejemplo, ADB Change Language .

A continuación, en los dispositivos 4.2+, debe usar otorgar la aplicación CHANGE_CONFIGURATION permiso a través de adb, adb shell pm grant android.permission.CHANGE_CONFIGURATION .

Finalmente, puede usar comandos adb (actividad de inicio) para cambiar la configuración regional.

Prueba esto

 adb shell "su -c 'setprop persist.sys.language fr; setprop persist.sys.country CA; stop; sleep 5; start' 

Necesitas un dispositivo rooteado.

Esto está por todas partes, para decirlo simplemente

setprop solo funcionará en un AVD o un dispositivo físico rooteado

La alternativa es usar la configuración en el Iniciador.

Dispositivo rooteado o AVD esto funciona:

 /platform-tools/adb shell root@generic:/ # getprop persist.sys.language getprop persist.sys.language en root@generic:/ # setprop persist.sys.language fr setprop persist.sys.language fr root@generic:/ # setprop persist.sys.country CA setprop persist.sys.country CA root@generic:/ # stop stop root@generic:/ # start start root@generic:/ # sleep 5 sleep 5 root@generic:/ # getprop |grep lang getprop |grep lang [persist.sys.language]: [fr] root@generic:/ # getprop |grep country getprop |grep country [persist.sys.country]: [CA] root@generic:/ # 

Ejecute los siguientes pasos:

  • Crear emulador con las API de Google Intel x86
  • Rootee el emulador, ejecutando el comando:

     adb root 
  • Ejecute el siguiente comando de shell a través de adb :

     adb -e shell "su root; setprop persist.sys.locale pt-PT; stop; sleep 2; start” 

    luego, salga del shell que reinicia el emulador.

  • Locales que necesitamos para capturas de pantalla:

     de_DE en_EN fr_FR ko_KO pt_PT es_ES ja_JA 

Para Android M o posterior, necesitas usar:

 setprop ro.product.locale xx-XX setprop persist.sys.locale xx-XX 

xx es idioma, XX es país

La solución para hacerlo sin rooting. Puede usar algo como esto la siguiente función. La función entra en la configuración y ejercita la interfaz de usuario para cambiar la configuración regional.

https://github.com/dtmilano/AndroidViewClient/blob/480ab93dbd01296a68c1ce7109ceb8275d1ed8a7/src/com/dtmilano/android/viewclient.py#L1302

La parte difícil es llegar al idioma correcto cuando estás en un idioma diferente. Se podría pensar que el idioma siempre mantiene el mismo índice en la lista, pero desafortunadamente no. Entonces debes tener una solución como esta.

Con : Usted tiene que modificarlo un poco para manejar diferentes teléfonos, las configuraciones pueden tener un orden diferente.

No puedes hacer eso con el adb en tu dispositivo. Su adb fuera del dispositivo, me refiero a que en su computadora conectada con usb, puede cambiarlo al pasar un permiso antes de cambiar el idioma.

En su dispositivo directamente, necesita un dispositivo rooteado.