2012-02-24 34 views
14

Programlı olarak Android'den tarih/saat ayarlamam gerekiyor, ancak başarılamıyorum!Android'in tarihi/saati programatik olarak ayarlayın

Kaynak kod 1

AlarmManager alarm = (AlarmManager) getSystemService(ALARM_SERVICE); 
alarm.setTime(1330082817000); 

AndroidManifest:

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

İstisna:

Service fatal error : Unable to start activity ComponentInfo{br.com.tdta.service/br.com.tdta.service.Service}: java.lang.SecurityException: setTime: Neither user 10038 nor current process has android.permission.SET_TIME. 
java.lang.RuntimeException: Unable to start activity ComponentInfo{br.com.tdta.service/br.com.tdta.service.Service}: java.lang.SecurityException: setTime: Neither user 10038 nor current process has android.permission.SET_TIME. 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2663) 
    at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
    at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
    at android.os.Handler.dispatchMessage(Handler.java:99) 
    at android.os.Looper.loop(Looper.java:123) 
    at android.app.ActivityThread.main(ActivityThread.java:4627) 
    at java.lang.reflect.Method.invokeNative(Native Method) 
    at java.lang.reflect.Method.invoke(Method.java:521) 
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
    at dalvik.system.NativeStart.main(Native Method) 
Caused by: java.lang.SecurityException: setTime: Neither user 10038 nor current process has android.permission.SET_TIME. 
    at android.os.Parcel.readException(Parcel.java:1247) 
    at android.os.Parcel.readException(Parcel.java:1235) 
    at android.app.IAlarmManager$Stub$Proxy.setTime(IAlarmManager.java:237) 
    at android.app.AlarmManager.setTime(AlarmManager.java:289) 
    at br.com.tdta.service.Service.onCreate(Service.java:32) 
    at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
    at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
... 11 more 

====

yukarıda bu üç kaynaklarına sahip 10 kaynak kodu 2

boolean itsWork = SystemClock.setCurrentTimeMillis(1330082817000); 
System.out.println(itsWork); 

Bildirim:

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

itsWork değeri:

false 

====

kaynak kodu 3

SimpleDateFormat format = new SimpleDateFormat("yyyyMMdd.hhmmss"); 
String data = format.format(new Date(1330082817000)); 
try { 
    Runtime.getRuntime().exec("date -s " + data); 
} catch (IOException e) { 
} 

Neyi yanlış yapıyorum?

Şimdiden teşekkürler!

+0

Sadece köklü bir telefonda çalışır. Ve burada bir takip http://stackoverflow.com/questions/6584772/is-possible-to-set-system-datetime-from-my-android-app –

+0

Bu [cevap] (http://stackoverflow.com/a/8752130/1833118) Köklü bir telefonda benim için çalışıyor. – hengxin

cevap

12

Kullanıcı uygulaması, cihaz süresini değiştirme iznine sahip değildir. Lütfen alternatif seçenek için cevabınızı following post'daki cashbash ile okuyun.

hızlı başvuru için buraya kopyalama:

this thread göre, kullanıcı uygulamaları ne olursa olsun onu sağlayan bir izin, zamanını ayarlamak mümkün değil. Bunun yerine, en iyi yaklaşım, kullanıcının zamanı manuel olarak ayarlamasını sağlamaktır. Biz kullanacağız:

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

Maalesef (onlara bir daha tıklama kurtaracak olan) zaman ayarına doğrudan bağlamak için bir yolu yoktur. ellapsedRealtime'dan yararlanarak, kullanıcının saati doğru bir şekilde ayarlamasını sağlayabiliriz.

+1

teşekkürler! Bunu kullanarak çözdüm: 'startActivity (yeni Intent (android.provider.Settings.ACTION_DATE_SETTINGS))' ' – eliangela

+2

Geç güncelleme, ancak başvurulan soru dizisinde bana göre anser'i kontrol etmelisiniz. SET_TIME iznini alabildiğiniz sürece büyük bir anlaşma değil. – jek

+0

Android ortamında ayarlanmış android os zaman ve tarih nasıl edinilir? Date() bunları iade ediyor mu? –

İlgili konular