J'essaie de définir la date et l'heure à l'aide du shell ADB mais celui-ci ne renvoie que l'heure actuelle.
J'ai essayé:
adb Shell date -s YYYYMMDD.HHmmss
et le temps unix comme:
adb Shell date 1318349236
des idées?
Pour économiser de l'espace de stockage, Android, comme beaucoup d'autres systèmes intégrés, utilise binaires multi-appels pour mettre en œuvre ses outils de base de ligne de commande tels que date
.
Le périphérique Android peut inclure toolbox
ou toybox
(ou les deux) binaires en fonction de la version. Vous pouvez vérifier quelle implémentation de l'outil date
disponible sur votre périphérique en exécutant les commandes toolbox date
et toybox date
. Ensuite, vous pouvez utiliser celui qui affiche la date actuelle. Par exemple, pour un appareil Android 6.0+, cela pourrait ressembler à:
$ adb Shell toybox date
Mon Jul 31 21:09:28 CDT 2017
$ adb Shell toolbox date
date: no such tool
Pour définir la date et l'heure à l'aide de toolbox date
, utilisez le format YYYYMMDD.HHmmss
:
adb Shell "su 0 toolbox date -s 20161231.235959"
Dans le cas de toybox date
, utilisez le format MMDDhhmm[[CC]YY][.ss]
:
adb Shell "su 0 toybox date 123123592016.59"
Android 6.0 a un nouveau format de date:
Default SET format is "MMDDhhmm[[CC]YY][.ss]", that's (2 digits each) month, day, hour (0-23), and minute. Optionally century, year, and second.
Et le réglage avec -s
ne fonctionne plus. Voici la commande set actualisée:
Exemple de la commande mise à jour:
(à l'intérieur d'un shell adb)
date 060910002016.00
aura pour résultat:
Thu Jun 9 10:00:00 GMT 2016
Remarque:La commande ne sera pas visible immédiatement sur le périphérique car elle ne déclenchera aucune diffusion de changement d'heure, mais elle sera visible dans une minute.
Pour contourner ce problème, vous pouvez ajouter cette diffusion manuellement de cette façon:
date 060910002016.00 ; am broadcast -a Android.intent.action.TIME_SET
Pour appeler ceci avec une commande adb
:
adb Shell 'date 060910002016.00 ; am broadcast -a Android.intent.action.TIME_SET'
adb Shell date -s `date +%G%m%d.%H%M%S`
Au début, il obtient la date actuelle de votre machine et la définit sur la cible Android . Cette approche devrait fonctionner sous Linux/Mac/Cygwin.
Vous devez indiquer la date si vous souhaitez la modifier . "- s" modifie le format SET. Le format SET par défaut est "MMJJhhmm [[CC] YY] [.ss]".
J'ai testé avec succès les commandes suivantes:
adb root
adb Shell "date `date +%m%d%H%M%Y.%S`"
Sur certains appareils comme RTAndroid cela fonctionne peut-être aussi:
adb Shell "su 0 date `date +%m%d%H%M%Y.%S`"
Pour que cela fonctionne sur mon Xperia S , j'ai dû interrompre les commandes comme suit:
> adb Shell
# su -
# date /* see current date */
# date -s YYYYmmdd
Motif: mon appareil était revenu au début de l'heure Linux et je n'étais pas particulièrement inquiet, tout ce que je voulais, c'était régler la date correcte - ce que je ne pouvais pas faire, par le système, car mon MIUI personnalisé ROM a continué à planter ...
En développant la réponse de @ uval, vous pouvez utiliser les éléments suivants pour mettre à jour la date et l'heure sur le périphérique Android en fonction de l'heure sur votre ordinateur Windows:
set dateYYYY=%date:~10,4%
set dateMM=%date:~4,2%
set dateDD=%date:~7,2%
set timeHH=%time:~0,2%
set timeMM=%time:~3,2%
set timeSS=%time:~6,2%
adb Shell su -c date %dateMM%%dateDD%%timeHH%%timeMM%%dateYYYY%.%timeSS%
adb Shell su -c am broadcast -a Android.intent.action.TIME_SET
Testé sur un appareil Android 6.0 enraciné et un PC Windows 10.
Le bon format qui a fonctionné pour moi est yyyyMMddHHmm.ss