2013-06-05 9 views
6

Ich versuche einige Sachen mit Android, wie ich Android-Entwicklung lernen, jetzt habe ich ein Szenario hier.Ändern Android System System Datum auf Knopf klicken von Android-Anwendung

  • Ich möchte das Android-Handy-System-Datum durch meine Anwendung ändern (zuerst würde ich gerne wissen, ist dies machbar?)

Das Layout ist wie unten

layout

Nun, was ich will ist, wenn der Benutzer auf die Schaltfläche klickt das Datum sollte um sagen, 20 Tage wie kann ich das tun.

ich bin zu starten nicht in der Lage ... Bitte

+0

Was haben Sie versucht und was können Sie nicht starten? Können Sie mehr Informationen bereitstellen? – JustWork

+0

nicht starten in dem Sinne, ich weiß nicht, ich weiß nicht, wie kann ich das Systemdatum und ändern Sie es durch meine Anwendung. Welche eingebaute Klassen bietet die Funktionalität zum Abrufen und Festlegen von Systemdaten –

+0

Sie möchten das mobile Datum ändern, wenn Sie auf die Schaltfläche drücken? – Blackbelt

Antwort

4

Auf Android, die einzige Möglichkeit für eine Anwendung helfen Sie Schreibzugriff auf die Zeit & Datum haben, ist die SET_TIME die Erlaubnis zu bekommen, die für „Anwendungen, die nur möglich ist, Diese sind im Android-System-Image oder mit demselben Zertifikat signiert wie die Anwendung, die die Berechtigung deklariert hat. " (siehe signatureOrSystem protection level).

Die einzige Möglichkeit für Ihre Anwendung, diese Schutzstufe zu erreichen, besteht darin, auf einem gerooteten Gerät zu laufen oder Ihre eigene Android-ROM zu erstellen und zu signieren. In diesem Fall können Sie problemlos die AlarmManager oder einfach die Calendar Instanz verwenden.

Viel Glück!

+0

Ich denke, es gibt mehr als nur auf einem gerooteten Gerät laufen. Ich benutze meine Anwendung auf einem Nexus 7, und obwohl ich eine Anwendung bekomme, um die Zeit vom GPS-Signal einzustellen (Smart GPS Time, funktioniert wie ein Champion), stürzt mein Code sofort ab, wenn ich es versuche. Irgendeine Idee, was fehlt? – Rich

7

Wie schon gesagt, das ist unmöglich. Sie benötigen die Berechtigung SET_TIME, und diese Berechtigung wird vom System nur für Anwendungen erteilt, die sich im Android-System-Image befinden. Wenn Sie dieses Privileg erhalten können, können Sie leicht mit dem AlarmManager wechseln. SystemClock.setCurrentTimeMillis schreiben das/dev/allarm Datei

adb shell ls -l /dev/alarm 
crw-rw-r-- system radio  10, 46 2013-06-12 10:46 alarm 
  • c Aufenthalte für Character special file (stored in /dev).
  • System der Besitzer der Datei ist
  • Radio wird die Gruppe

System und Radio gelesen haben und Schreibberechtigungen (rw-, Baum-Bits, int-Wert 6), die anderen haben nur die Leseberechtigung (r, int-Wert 4). Die Dateiberechtigung lautet also 664. Wenn Sie root-Benutzer (su) ausführen können, können Sie die Berechtigung dieser Datei ändern und einen neuen Wert darin schreiben. Ein Fehlerbericht wurde ausgefüllt, um Google zu bitten, Apps zu erlauben, das mobile Datum programmatisch zu ändern, aber es wurde abgelehnt. Here die Referenz

+1

schöne exaplanation. Sie müssen das Gerät rooten, um einen Super User-Zugriff zu erhalten. + 1 – Raghunandan

0

Normale Benutzeranwendungen haben keine Berechtigung, die Gerätezeit zu ändern. Lesen Sie die Antwort von CashBash in der following post für die alternative Option.

0

Leider hat Blackbelt Recht; Androide lässt uns viele coole Dinge tun, aber Systemzeit programmatisch zu ändern, ist nicht einer von ihnen.

Da ich sehe, dass Sie nach glaubwürdigeren/offiziellen Quellen suchen, schlage ich vor, Sie überprüfen this open ticket with Google, was darauf hindeutet, dass dies ein offenes Problem ist - es sollte funktionieren, aber nicht, und es scheint nicht Google wird das Problem in Kürze beheben. Der Kern davon ist, dass das SET_TIME-Schutzniveau höher gesetzt ist, als es sein sollte. (Weitere Informationen zu Berechtigungen finden Sie unter here)

Obwohl dies nicht das gleiche wie die programmgesteuerte Änderung der Zeit ist, können Sie die Systemzeit für den Benutzer ändern, wenn Sie aus irgendeinem Grund Systemzeit benötigen geändert. This thread wird erklären, wie Sie das implementieren, wenn Sie diese Route gehen möchten.

Ich hoffe, dies war hilfreiche Informationen!