2010-05-27 2 views
5

나는 약간의 코드로 놀고있다. 나는 활동을 만들고 단순히 같은 것을 수행Android OS 2.2 권한 :이 간단한 코드가 왜 효과가 없는지 전혀 알 수 없습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까?

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

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

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

이 그래, 내 AndroidManifest.xml을에, 내가 추가 한 :

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

아무것도 변경되지 않습니다를. SystemClock은 결코 리셋되지 않습니다 ... 그것은 계속 똑딱 거리고 있습니다. "SET_TIME"권한이 프로그램에 부여되지 않았다고 말하는 오류가 발생했습니다. 보호 수준 3

사용 권한은 있습니다 ... 그리고 API 2.2에서는이 기능이 현재 지원됩니다. 나는 내가 뭘 잘못하고 있는지 전혀 모른다.

if android.content.Intent; 연극이 시작됩니다. 설명해주십시오. 나는 그 의도가 무엇인지에 대해 정말로 이해하지 못한다!

도움 주셔서 감사합니다.

+0

logcat은 무엇입니까? –

답변

12

작동합니다 :

은 내가, 그것을 밖으로 시도하시기 바랍니다 오류를 발견 생각합니다. 응용 프로그램은 프로그래밍 방식으로 시스템 시계를 변경할 수 없습니다.

업데이트

SET_TIME는 2.2부터 사용할 수 있지만 시스템 서명으로 서명 시스템 프로세스 나 앱에 부여 할 수 있습니다.

+0

http://developer.android.com/reference/android/Manifest.permission.html#SET_TIME에 따르면 API 8부터 사용할 수 있습니다. 거래가 무엇입니까? – JRL

+0

실제로 2.2 문서에 있습니다. 2.2 소스 코드 대신 2.0 소스 코드를 확인했습니다. 혼란에 대해 죄송합니다. 2.2 소스 코드를 확인한 결과 시스템 서명으로 서명 된 응용 프로그램에만 SET_TIME 권한을 부여 할 수있었습니다. 즉,이 권한을 사용할 수 없습니다. 명확한 설명을 주신 덕분에 –

+0

주셔서 감사합니다. 주어진 권한에 대한 보호 수준이 문서화되어 있거나 소스에서 AndroidManifest.xml을 살펴야합니까? – JRL

-3

System.out.println()의 insetad는 Log.v() 또는 이와 유사한 것을 사용합니다. 두 라인에 </uses-permission> 을 제거, 그건 SET_TIME_ZONE 권한이 있습니다하지만 SET_TIME 권한이 없습니다

+0

Log. *()가 더 좋지만 System.out.println()은 작동합니다. 과 동일합니다. 후자는 전자의 짧은 버전입니다. –

+0

@ ROom이 말했듯이 은 실제로는 의 짧은 손으로 비어 있습니다. –

2

시스템 시간을 설정하는 SET_TIME 권한이있는 AlarmManager를 사용하는 것 같습니다.

+0

방금 ​​두통이 심해졌습니다. 감사합니다. ! –

+2

API 레벨에서 테스트 해본 적이 있습니까? "java.lang.SecurityException : setTime : 사용자 10041도 현재 프로세스도 android.permission.SET_TIME이 아닙니다."권한을 설정했습니다. "android. permission.SET_TIME "내 매니페스트.아무도 그것을 확인할 수 있습니까? – Hemeroc

+0

@Hemeroc 여기에 있습니다. API 레벨 8에서 테스트되었습니다. 응용 프로그램을 시스템 인증서로 서명해야합니다. –

관련 문제