2010-05-27 10 views
5

Ich spiele nur mit etwas Code herum. Ich erstelle eine Aktivität und einfach etwas tun, wie folgt aus:Android OS 2.2 Berechtigungen: Ich habe absolut keine Ahnung, warum dieses einfache Stück Code nicht funktioniert. Was mache ich falsch?

long lo = currentTimeMillis(); 
System.out.println(lo); 

lo *= 3; 
System.out.println(lo); 

SystemClock.setCurrentTimeMillis(lo); 
System.out.println(currentTimeMillis()); 

Ja, in meinem AndroidManifest.xml, ich habe hinzugefügt:

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

ändert sich nichts. Der SystemClock wird nie zurückgesetzt ... er tickt einfach weiter. Der Fehler, den ich bekomme, sagt nur, dass die Erlaubnis "SET_TIME" dem Programm nicht gewährt wurde. Schutzstufe 3.

Die Berechtigungen sind da ... und in der API für 2.2 heißt es, dass diese Funktion jetzt unterstützt wird. Ich habe keine Ahnung, was ich falsch mache.

Wenn android.content.Intent; kommt ins Spiel, bitte erklären. Ich verstehe nicht wirklich was die Idee hinter Intents!

Danke für jede Hilfe!

+0

Zeigt logcat etwas? –

Antwort

12

Es gibt eine SET_TIME_ZONE Erlaubnis aber es gibt keine SET_TIME Erlaubnis. Anwendungen können die Systemuhr nicht programmgesteuert ändern.

aktualisiert

SET_TIME ist seit 2.2 verfügbar, kann aber nur für den Systemprozess oder Apps mit dem System Signatur signiert gewährt werden.

+0

Laut http://developer.android.com/reference/android/Manifest.permission.html#SET_TIME ist es seit API 8 verfügbar. Was ist das Geschäft? – JRL

+0

Tatsächlich ist es in den 2.2 Dokumenten, ich habe gerade festgestellt, dass ich den 2.0 Quellcode anstelle von 2.2 überprüfte. Entschuldigung für die Verwirrung. Ich habe den 2.2-Quellcode überprüft und die SET_TIME-Berechtigung kann nur für Anwendungen erteilt werden, die mit der Systemsignatur signiert sind. Dies bedeutet, dass Sie diese Berechtigung nicht verwenden können. –

+0

danke für die Klärung. Ist die Schutzstufe für eine bestimmte Berechtigung irgendwo dokumentiert oder muss AndroidManifest.xml in der Quelle angezeigt werden? – JRL

-3

Inset von System.out.println() verwenden Sie Log.v() oder ähnliches.

Ich glaube, ich Ihre Fehler gefunden, bitte versuchen aus: Entfernen </uses-permission> auf beiden Leitungen, die funktionieren sollte

+0

Log. *() Ist besser, aber System.out.println() funktioniert. entspricht . Letzteres ist nur eine kurze Version des ersteren. –

+0

Wie @Romain sagte, ist wirklich eine kurze Hand von , die leer ist. –

2

mit AlarmManager mit SET_TIME Berechtigung zum Einstellen der Systemzeit scheint zu funktionieren :)

+0

Sie rettete mir nur eine riesige Kopfschmerzen. Danke ! –

+2

Auf welcher API-Ebene hast du das getestet? Ich bekomme immer eine Ausnahme mit den Worten: "java.lang.SecurityException: setTime: Weder der Benutzer 10041 noch der aktuelle Prozess hat android.permission.SET_TIME." Ich setze die Erlaubnis: "android. permission.SET_TIME "in meinem Manifest.Kann das jemand bestätigen? – Hemeroc

+0

@Hemeroc Das gleiche hier. Getestet auf API-Ebene 8. Sieht so aus, als ob die Anwendung mit dem Systemzertifikat signiert sein muss. –

Verwandte Themen