OS-Datum/Zeit programmatisch ändern

Hallo sehr geschätzte LeserInnen,

kennt Ihr eine Möglichkeit die Betriebssystem-Uhrzeit aus dem Java-Quellcode heraus zu ändern?
Am Ende soll der User über eine Option die Möglichkeit bekommen Datum und Zeit zu ändern, ohne dass die App geschlossen wird.
Beim googlen habe ich nichts finden können. Aber vielleicht habe ich auch mit falschen Suchwörtern gesucht.

Frank

Kurze Antwort: Geht nicht.
Lange Antwort: Das geht aber nur auf gerooteten Systemen. Ansonsten musst du die entsprechenden Optionen öffnen:

startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS));

Was heißt aus dem „Java Quellcode“ heraus? Da der Anwender die Uhrzeit einstellen soll, würde es nicht ausrichen einfach die Systemeinstellung aufzurufen?
Die kann man ja wie jede andere beliebige Activity per Intent aufrufen:
startActivity(new Intent(android.provider.Settings.ACTION_DATE_SETTINGS));

*** Edit ***

…muss meinen Kaffee nachfüllen, die Reaktionszeit lässt wohl nach. :wink:

Danke schön Jungs!

Diese Möglichkeit hatte ich beim googlen nicht gefunden und schon ausprobiert.

Aber leider hilft sie mir nicht. Ich programmiere für eine Maschinenbedienung. Es gibt daran keine Hardwarebutton (also auch kein Hardware-zurück). Ohne Hardwarebutton kommt man aus der Datum/Zeit-Einstellung gar nicht raus.
Und das Ziel ist, dass der User die App nie verlässt. Aber es soll halt auch mit Datum und Zeit gearbeitet werden, und die kann sich ändern (Uhr geht nach, Zeitzone geändert, …?).

Und wenn ich den obigen Text richtig interpretiere, so kann ich nichts machen.
Obwohl, da fällt mir ein work around ein: Ich lasse mir die “Abweichung” zur Systemzeit geben (Eingegebene Zeit - Systemzeit) und rechne dann mit Systemzeit + (gespeicherte) Differenz. Was bess`res gibt’s nicht, oder?

Grüße!
Frank

Das ist dann ja ein recht spezifisches System. Evlt. gerootet? Dann kann man ja - wie von schlingel angemerkt - auch aus einer App heraus die Systemzeit ändern, indem man der App die Permission SET_TIME einräumt.
Die Zeitzone ändern müsste auch auf nicht gerooteten System gehen - zumindest ist der Doku nichts zu entnehmen, dass es für third-party-Apps nicht geht.

Für welchen Zweck brauchst Du die Zeit? Vielleicht gibt es ja noch andere Wege. Sind die Geräte evlt. in einem Netzwerk, kann man sich die Systemzeit von einem Server holen … ?

So weit ich weiß sind die Systeme nicht gerootet.
Sie besitzen keine Schnittstelle, außer SD-Card,
also keinen Server- oder Internetzugriff, keine SMS, kein Telefon.

Wozu ich die Zeit brauche…?
Es wird protokolliert wann wie viele Stückzahlen mit der Maschine verarbeitet wurden.
Außerdem werden die Fehlerlogs in Dateien gespeichert, welche nach Datum benannt werden, aber das ist zweitrangig.

Falls die Eingabe/Protokollierung manuell durch den Anwender erfolgt, könnte/müsste dieser die Zeit angeben.

Ansonsten sehe nur die von Dir genannte Möglichkeit mit der Zeitdifferenz System zu Benutzereingabe zu arbeiten.

Das protokollieren passiert automatisch.
Es wird gespeichert wann (Systemzeit) wie viel (interner Zähler) verarbeitet wird.

Grüße!