System-Datum und -Uhrzeit einstellen, aus eigener Anwendung

  • Antworten:8
Dennis Mro...
  • Forum-Beiträge: 19

06.01.2011, 10:37:42 via Website

Hallo,

folgendes Problem:

Ein Android-Gerät, autonom, ohne Anbindung an ein Netzwerk, GSM o.ä. (Industriesteuerung)

Ich benötige eine aktuelle Uhrzeit und auch das aktuelle Datum, was auch vom Benutzer geändert werden muß (Einsatz in unterschiedlichen Zeitzonen). Über den Befehl setCurrentTimeMillis (aus android.os, SystemClock) könnte ich ja die Systemzeit anpassen. Leider fehlt mir hier das Recht. Ich dachte an

1<uses-permission android:name="android.permission.SET_TIME" />

und

1<uses-permission android:name="android.permission.WRITE_SETTINGS" />

,was aber beides nicht funktioniert. Der Debugger zeigt mir an:

1Not granting permission android.permission.SET_TIME to package [... ]

und

1Unable to open alarm driver: Permission denied.

In anderen Quellen habe ich gelesen, daß nur der Benutzer "System" das Recht hat, die Systemzeit zu ändern. Dies wäre ohnehin nicht nötigt, weil die Zeit ja über das Netz synchronisiert wird. Problem bei mir: Ich (bzw. mein Gerät) hat kein Netz.

Möglich wäre noch der Umweg, den Benutzer zu den Systemeinstellungen zu schicken per

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

das möchte ich jedoch aus anderen Gründen wenn möglich vermeiden.

Hat jemand eine Idee oder einen Tip, wie ich meinem Programm die notwendigen Rechte geben kann? In chinesischen Foren wird die Möglichkeit zwar angesprochen, aber hier verstehe ich die Vorgehensweise nicht: http://blog.csdn.net/liujian885/archive/2010/03/22/5404834.aspx

Gruß,
Dennis

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

06.01.2011, 13:19:27 via App

Hey,
ich habe "Clocksync" aus dem Market installiert, die App benötigte root-Rechte und bringt deine Urzeit auf den neusten (Atomuhr-)Stand. Seit neuestem kann sie das auch ohne root-Rechte über die "Backup Funktion". Anscheinend ab Froyo..
Vielleicht die Entwickler mal anschreiben?
Lg Ansgar
edit: Man braucht anscheinend doch root.. In der App steht das ganz genau in der FAQ...

— geändert am 06.01.2011, 13:28:44

Antworten
Dennis Mro...
  • Forum-Beiträge: 19

06.01.2011, 15:20:22 via Website

Hallo Ansgar,

https://www.nextpit.de/de/android/market/apps/app/ru.org.amip.ClockSync/ClockSync braucht root-Rechte in der Version 1.1.0

Ich darf aber meine Geräte nicht rooten wegen der Garantie. Privat vielleicht nicht so das Problem, im gewerblichen Einsatz schon.

Ich glaube, das sieht dann eher schlecht aus.

Gruß,
Dennis

Antworten
Ansgar M
  • Forum-Beiträge: 1.544

06.01.2011, 16:34:28 via App

Ok, so wie ich das in den FAQ gelesen hab, können Systemapps die Uhrzeit einstellen mit eben dieser Permission (SET_TIME). Wäre eine Systemapp möglich? Aber ich glaub, dafür braucht man root-Rechte.. :(
Lg Ansgar

Antworten
Dennis Mro...
  • Forum-Beiträge: 19

07.01.2011, 08:10:23 via Website

Hallo Ansgar,

wie kann ich denn eine SystemApp erstellen? Die müsste ich doch dann signieren mit dem System-Schlüsse oder so, oder? Wichtig ist, daß ich keine Eingriffe in das System vornehmen darf, sondern schlicht nur eine Software per SD-Karte installieren kann. Wobei ich mich derzeit einzig auf das Archos 43 tablet beschränken muß.

Nebenbei noch eine andere Frage: Kann ich per App eigentlich (sozusagen als BatchFile) den Desktop ändern, also Verknüpfungen anlegen/löschen, Hintergrund ändern etc.? Würde mir als eine Art Installations-Script entgegen kommen, wenn ich doch auf die system-eigene Möglichkeit zur Einstellung von Datum und Uhrzeit zurückgreifen muß.

Ansonsten bin ich zumindest schon mal so weit, daß meine App automatisch nach dem Boot startet, fullscreen läuft und auch die 4 SoftKeys von Archos ausblendet. Abgesehen von einem geheimen Ausgang hat der Benutzer also keine Chance, meine App zu beenden und an das System zu gelangen. Das erklärt auch, warum ich nicht unbedingt auf die Systemsteuerung zur Einstellung von Uhrzeit und Datum zurückgreifen will, weil dann nämlich der Benutzer auf den Desktop gelangen kann (die 4 SoftButtons werden eingeblendet). Kurz zum Hintergrund: Wir verwenden das Archos tablet nur als günstige Hardware, um per Bluetooth eine Industrieanlage zu bedienen.

Gruß,
Dennis

Antworten
forca
  • Forum-Beiträge: 2

25.03.2011, 10:21:58 via Website

System-Datum und -Uhrzeit einstellen, aus eigener Anwendung:

Hallo, ich habe im Moment das gleiche Problem, ich kann die systime/sysdate aus meiner app nicht einstellen. Folge ->

1Unable to open alarm driver: Permission denied.

anscheinend muss man seine app mit sys/platform keys signieren, nur wie? es gibt keine genaue/konkrete howto dafür.

@Dennis:
hast du inzwischen eine brauchbare Lösung gefunden?

— geändert am 25.03.2011, 10:49:14

Antworten
Simon F.
  • Forum-Beiträge: 1.527

25.03.2011, 10:45:07 via App

Wenn die Zeit onehin nur in der eigenen App verwendet werden soll, könnte die Systemzeit einfach beibehalten werden. Die Zeit in der App könnte anhand der Systemzeit mit eigene, Offset eingestellt werden.
Oder man zeigt die Zeit der SPS an, so sieht man auch gleich, dass die Geräte noch kommunizieren.

Antworten
forca
  • Forum-Beiträge: 2

25.03.2011, 11:03:36 via Website

Vielen Dank für deine schnelle Antwort. Tut mir leid, ich habe nicht genug Infos gegeben, was ich alles so vorhabe:

meine App soll SysTime/SysDate + Netzwerk (ip, mask, gw, etc..) einstellen könnnen, sodass die Einstellungen tatsächlich vorgenommen werden, alsob man das aus dem SysDialog vornehmen würde. Der Grund dafür ist, dass es nur meine App im Vordergrund laufen soll und alles über meine App gemacht werden soll. So mehr oder weniger das Vorhaben. Die Umleitung via:

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

habe ich ausprobiert (funk-t auch), kommt aber aufgrund der Kundenrequirements nicht in Frage...

— geändert am 25.03.2011, 11:05:01

Antworten
Dennis Mro...
  • Forum-Beiträge: 19

25.03.2011, 11:41:29 via Website

Nur noch kurz als Anmerkung: Letzlich habe ich das Datum-/Zeitproblem bei mir so lösen können, daß ich tatsächlich die Systemzeit lasse wie sie ist und mir nur einen Offset einstelle, der auf die Systemzeit addiert (bzw. subtrahiert) wird. Unsichtbar für den Benutzer. Also ähnlich dem Ansatz von Simon F.
(eigener Thread in der Anwendung, der bei mir im 10sek-Takt eine Anzeige aktualisiert und damit die Uhr und das Datum anzeigt)

Dennis

Antworten