Cómo establecer la hora en el dispositivo mediante progtwigción

He creado una aplicación que reemplaza la hora actual que muestra el tiempo del servidor. Lo he intentado mucho, pero no encontré una solución. ¿Cómo puedo configurarlo en mi dispositivo?

Sé cómo hacer que el servidor tenga tiempo en mi dispositivo Android. ¿Es posible en tiempo real, especialmente en Android?

  • Server Time se configura automáticamente en mi dispositivo en mi evento de clic de botón.

Si tiene el permiso correcto (consulte a continuación), puede hacerlo con el AlarmManager . Por ejemplo, para establecer la hora en 2013/08/15 12:34:56, podría hacer:

 Calendar c = Calendar.getInstance(); c.set(2013, 8, 15, 12, 34, 56); AlarmManager am = (AlarmManager) this.getSystemService(Context.ALARM_SERVICE); am.setTime(c.getTimeInMillis()); 

Necesita el permiso SET_TIME para hacer esto. Desafortunadamente, este es un permiso de signatureOrSystem .

Definición en AndroidManifest.xml:

    

Las únicas aplicaciones que pueden usar este permiso son:

  • Firmado con la imagen del sistema
  • Instalado en la carpeta /system/

A menos que construyas ROM personalizadas, no tienes suerte con la primera.

Por el segundo, depende de lo que estás haciendo.

  • Si está creando una aplicación para una amplia distribución ( Google Play , etc.), probablemente no debería. Es solo una opción para usuarios root, y solo podrá instalarlo manualmente. Cualquier mercado no lo instalaría en la ubicación correcta.

  • Si está construyendo una aplicación para usted (o simplemente como un ejercicio de aprendizaje), vaya por ello. Sin embargo, necesitarás un teléfono rooteado, así que hazlo primero. A continuación, puede instalar la aplicación directamente en /system/app/ con ADB o un administrador de archivos. Vea artículos como este para más detalles.


Una nota final: el permiso SET_TIME y AlarmManager#setTime() se agregaron en Android 2.2 ( API 8 ). Si intentas hacer esto en una versión anterior, no estoy seguro de que funcione.

Prueba esto:

Puedes usar el siguiente comando:

 adb shell date -s YYYYMMDD.HHmmss 

Ejemplo:

 adb shell date -s 20120423.130000 

establece la fecha para el lunes 23 de abril 13:00:00 IST 2012

O también puedes probar esto:

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

¡¡Espero eso ayude!!

Respuesta corta:

No puede hacerlo si planea tener su aplicación en la tienda de aplicaciones o actualizar la hora del servidor.

Necesita permiso de SignatureOrSystem para cambiar la fecha de la hora según el servidor.

Es posible que tenga que rootear su dispositivo y luego implementar el cambio.

Este hilo debería ayudarte mucho, para entenderlo mejor.

He hecho exactamente lo mismo durante dos semanas, ahora tengo la solución con un dispositivo rooteado

  1. Obtener tiempo del servidor
 < ?php echo date("Ymd.His "); ?>