¿Es posible configurar System DateTime de mi aplicación para Android?

Quiero fijar el reloj del sistema por SystemClock.setCurrentTimeMillis , pero resolvió el siguiente error:

 "Unable to open alarm driver: Permission denied" 

A continuación se muestra la descripción de setCurrentMillis API del sitio de desarrolladores de Android:

 public static boolean setCurrentTimeMillis (long millis) 

Desde: API Nivel 1 Establece el tiempo de pared actual, en milisegundos. Requiere que el proceso de llamada tenga los permisos adecuados.

Devuelve si el reloj se ajustó correctamente a la hora especificada.

Por lo tanto, la aplicación necesita obtener el permiso para establecer la hora. En AndroidManisfest.xml he insertado android.permission.SET_TIME pero tengo el mismo error de mensaje.

He intentado varias soluciones encontradas en Internet y parece que no es posible establecer el tiempo del sistema sin root incluso en FroYo (Android 2.2) donde se introdujo android.permission.SET_TIME , la aplicación normal no puede obtener este permiso porque / dev / Archivo de alarma tiene 664 permission . Así que la solución es cambiar el permiso en 666 pero requieren un dispositivo enraizado y es demasiado invasivo para ser una solución.

Quiero crear una aplicación para mi empresa para sincronizar datos entre diferentes sistemas y es esencial tener relojes sincronizados.

Gracias de antemano por su disposición

Eclipses

Eclipses,

Hice un poco de comprobación para usted en esto y encontré un boleto abierto con Google para solucionar el problema. Lo único es que la etiqueta ha estado abierta desde el 8 de noviembre de 2009. Básicamente sólo el sistema puede cambiar el tiempo incluso con el permiso. Según los comentarios en el enlace de abajo un desarrollador hizo algunas investigaciones y observó que cuando se creó el permiso SET_TIME, no se le dio el nivel de protección adecuado en el OS (signatureorSystem vs dangerous). Como resultado, no hace lo que se supone que debe hacer.

http://code.google.com/p/android/issues/detail?id=4581

A continuación se muestra una explicación de los distintos niveles de protección que pueden tener los permisos. Actualmente, de acuerdo con la cita de desarrollador anterior SET_TIME tiene "signatureorSystem" cuando debería tener "peligroso".

http://developer.android.com/guide/topics/manifest/permission-element.html#plevel

En resumen, actualmente no hay manera de cambiar el tiempo de forma programática sin necesidad de enraizar el teléfono.

Una nota final es que si quieres ir con roms personalizados también hay un boleto abierto para Cyanogenmod para añadir la capacidad de su rom también.

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=CyanogenMod+SET_TIME

Espero que esto ayude a algunos, George

Según este post , SET_TIME es el permiso correcto, pero sólo funcionará en un teléfono con raíz.

Lo hemos hecho No es un gran problema, siempre y cuando usted puede obtener la ptission SET_TIME. Vea mi respuesta a una pregunta similar .

En cuanto a otras respuestas que indican que no es posible sin enraizar el teléfono, entonces esto se refiere sólo a obtener el permiso. Para esto vea aquí y aquí .

  • Nexus 7 Soporte para Android Application Manifest Assembly
  • Iniciar otra actividad si la casilla está marcada
  • Mi aplicación no aparece en las tablas
  • No se encontró actividad de Lanzador, a pesar de haber sido declarada en manifest.xml
  • ¿Cuál es el especificador para el host vacío en el filtro de intenciones?
  • No se puede resolver el símbolo ACCESS_FINE_LOCATION
  • Uso de atributos desde el nivel API más allá de minSdkVersion
  • Manifiesto del proceso Gradle con la nueva fusión de manifiesto
  • ¿Es posible definir un receptor de difusión como una clase interna en el archivo de manifiesto?
  • Cómo manejar varias clases de aplicación en android
  • Androide. Bloquear la orientación de la pantalla para todas las actividades
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.