java android system-clock

java - Establecer la fecha/hora de Android programáticamente



system-clock (1)

La aplicación de usuario no tiene permiso para cambiar la hora del dispositivo. Por favor lea la respuesta de cashbash en la siguiente publicación para la opción alternativa.

Copiando aquí para una referencia rápida:

De acuerdo con este hilo , las aplicaciones de usuario no pueden establecer la hora, independientemente de los permisos que le demos. En su lugar, el mejor enfoque es hacer que el usuario establezca la hora manualmente. Usaremos:

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

Desafortunadamente, no hay forma de vincularlos directamente a la configuración de tiempo (lo que les ahorraría un clic más). Al hacer uso de ellapsedRealtime , podemos asegurarnos de que el usuario establezca la hora correctamente.

Necesito configurar la fecha / hora de Android programáticamente, ¡pero no estoy teniendo éxito! Tengo estas tres fuentes arriba:

Código fuente 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" />

Excepción:

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

====

Código fuente 2

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

Manifiesto:

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

Valor de su trabajo:

false

====

Código fuente 3

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

¿Qué estoy haciendo mal?

¡Gracias por adelantado!