Ich versuche, Datum und Uhrzeit mit der ADB-Shell einzustellen, aber die Shell gibt nur die aktuelle Uhrzeit zurück.
Ich habe es versucht:
adb Shell date -s YYYYMMDD.HHmmss
und Unix-Zeit wie:
adb Shell date 1318349236
irgendwelche Ideen?
Um Speicherplatz zu sparen, verwendet Android wie viele andere eingebettete Systeme Multi-Call-Binärdateien , um grundlegende Befehlszeilen-Tools wie date
zu implementieren.
Das Android-Gerät kann je nach Version entweder toolbox
oder toybox
(oder beide) enthalten. Sie können überprüfen, welche Implementierung des date
-Tools auf Ihrem Gerät verfügbar ist, indem Sie die Befehle toolbox date
und toybox date
ausführen. Dann können Sie das Datum verwenden, das das aktuelle Datum ausgibt. Für ein Android 6.0-Gerät könnte es beispielsweise so aussehen:
$ adb Shell toybox date
Mon Jul 31 21:09:28 CDT 2017
$ adb Shell toolbox date
date: no such tool
Um Datum und Uhrzeit mit toolbox date
einzustellen, verwenden Sie YYYYMMDD.HHmmss
-Format:
adb Shell "su 0 toolbox date -s 20161231.235959"
Bei toybox date
verwenden Sie das MMDDhhmm[[CC]YY][.ss]
-Format:
adb Shell "su 0 toybox date 123123592016.59"
Android 6.0 hat ein neues Datumsformat:
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.
Die Einstellung mit -s
funktioniert nicht mehr. Dies ist der aktualisierte Befehl:
Beispiel für den aktualisierten Befehl:
(während in einer Adb Shell)
date 060910002016.00
wird darin enden, dass:
Thu Jun 9 10:00:00 GMT 2016
Hinweis:Der Befehl ist nicht sofort auf dem Gerät sichtbar, da er keine zeitgesteuerte Übertragung auslöst. Er wird jedoch innerhalb einer Minute sichtbar.
Um dies zu umgehen, können Sie diese Übertragung manuell wie folgt anhängen:
date 060910002016.00 ; am broadcast -a Android.intent.action.TIME_SET
So rufen Sie dies mit einem adb
-Befehl auf:
adb Shell 'date 060910002016.00 ; am broadcast -a Android.intent.action.TIME_SET'
adb Shell date -s `date +%G%m%d.%H%M%S`
Zunächst wird das aktuelle Datum Ihres Computers abgerufen und auf dem Android-Ziel festgelegt. Dieser Ansatz sollte unter Linux/Mac/Cygwin funktionieren.
Sie müssen einen Datumswert eingeben, wenn Sie ihn ändern möchten . "- s" ändert das SET-Format. Das Standard-SET-Format ist "MMDDhhmm [[CC] YY] [. Ss]".
Ich habe die folgenden Befehle erfolgreich getestet:
adb root
adb Shell "date `date +%m%d%H%M%Y.%S`"
Auf einigen Geräten wie RTAndroid funktioniert es vielleicht auch:
adb Shell "su 0 date `date +%m%d%H%M%Y.%S`"
Damit dies auf meinem Xperia S funktioniert, musste ich die Befehle wie folgt unterbrechen:
> adb Shell
# su -
# date /* see current date */
# date -s YYYYmmdd
Motiv: Mein Gerät war auf den Beginn der Linux-Zeit zurückgesetzt und ich machte mir keine großen Sorgen um die Zeit. Ich wollte nur das richtige Datum einstellen - was ich übrigens aufgrund meines benutzerdefinierten MIUI = nicht über die Systemeinstellungen tun konnte ROM stürzte immer wieder ab ...
Wenn Sie die Antwort von @ uval erweitern, können Sie das Datum und die Uhrzeit auf dem Android-Gerät anhand der Uhrzeit auf Ihrem Windows-Computer aktualisieren:
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
Getestet auf einem gerooteten Android 6.0-Gerät und einem Windows 10-PC.
Das richtige Format, das für mich funktioniert hat, ist yyyyMMddHHmm.ss
Ich hatte kein Problem mit Android 5, die meisten Antworten, die ich ohne su im Befehl gefunden habe, funktionieren.
Android 6 hat meine Aufmerksamkeit erregt. Auf Android 6 hat es mir keinen Fehler gemacht, es hat es nur nicht richtig eingestellt, es wird es wieder auf das zurücksetzen, was es vor dem Befehl war. Ich bin auch auf /system/bin/sh: su: not found errors
Als ich dies versuchte https://stackoverflow.com/a/43481982/3922705 und dies https://stackoverflow.com/a/19497572/3922705
Nach all den Try-and-Error-Sitzungen habe ich es herausgefunden.
Dies ist das Datumsformat, das ich benutze MMDDhhmm [[CC] YY] [. Ss]
adb Shell date '0739010002017.00'
Dieser Befehl funktionierte anfangs nicht, um zu funktionieren, er funktionierte nicht von alleine.
Ich habe diese 3 Schritte benutzt und es funktioniert für mich.
Zuerst adb Shell settings put global auto_time 1
(Datum und Uhrzeit automatisch aktivieren)
Zweitens adb Shell date '0739010002017.00'
(Zeit einstellen, die Sie wollen)
Drittens adb Shell settings put global auto_time 0
(Automatisches Datum und Uhrzeit ausschalten)
Hinweis: Für mein spezielles Projekt kann ich mich nicht auf die vom Netzwerk und vom GPS bereitgestellte Zeit verlassen. Deshalb habe ich den dritten Befehl. die die Funktion ausschalten.