wake-up-neo.net

Stellen Sie Datum und Uhrzeit mithilfe der ADB-Shell ein

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?

15
Abraão Caldas

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"
35
Alex P.

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'
22
Amir Uval
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.

14
Greg Rynkowski

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`"
11
Ivan Kovtun

Auf einigen Geräten wie RTAndroid funktioniert es vielleicht auch:

adb Shell "su 0 date `date +%m%d%H%M%Y.%S`"
2
Hpsaturn

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 ...

2
Midas

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.

1
superbeef150

Das richtige Format, das für mich funktioniert hat, ist yyyyMMddHHmm.ss

0
Ranhiru Cooray

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.

0