Cómo establecer la hora del dispositivo mediante programación

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

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

  • La hora del servidor se establece automáticamente en mi dispositivo en mi evento de clic de botón.

Si tiene el permiso correcto (ver abajo), puede hacerlo con AlarmManager . Por ejemplo, para fijar la hora a 2013/08/15 12:34:56, usted 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:

  <!-- Allows applications to set the system time --> <permission android:name="android.permission.SET_TIME" android:protectionLevel="signature|system" android:label="@string/permlab_setTime" android:description="@string/permdesc_setTime" /> 

Las únicas aplicaciones que pueden utilizar este permiso son:

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

A menos que usted construya ROMs de encargo, usted está fuera de suerte con el primer.

Para el segundo, depende de lo que usted está haciendo.

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

  • Si usted está construyendo una aplicación para usted (o simplemente como un ejercicio de aprendizaje), vaya para él. Sin embargo, necesitarás un teléfono con raíces, así que hazlo primero. A continuación, puede instalar la aplicación directamente en /system/app/ con ADB o con un administrador de archivos. Ver 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 estás intentando hacer esto en una versión anterior, no estoy seguro de que funcione en absoluto.

Prueba esto:

Puede utilizar el siguiente comando:

 adb shell date -s YYYYMMDD.HHmmss 

ejemplo:

 adb shell date -s 20120423.130000 

Establece la fecha para Lun Apr 23 13:00:00 IST 2013

O puede probar esto:

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

¡¡Espero eso ayude!!

Respuesta corta:

No puedes hacerlo si planeas tener tu aplicación en la appstore o actualizar la hora a la hora del servidor.

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

Es posible que tenga que enrutar el dispositivo e implementar el cambio.

Este hilo debe ayudarte mucho, para entenderlo mejor.

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

  1. Obtenga la hora del servidor
 <?php echo date("Ymd.His "); ?> 
  • Implementar etiquetas de fecha y hora continuas en el eje x de mpandroidchart
  • Uso de fechas con la biblioteca Graphview
  • Obtener DateTime real de un dispositivo en modo sin conexión
  • Mostrar la fecha / hora UTC en la fecha / hora de acuerdo con la zona horaria actual
  • Unix timestamp a datetime en android
  • Diferencia, en minutos, entre dos fechas
  • Convertir la hora de la época en la fecha y la hora de la fecha en la época en Android
  • Mes en la clase SimpleDateFormat
  • Administrador de alarmas de Android
  • Cómo convertir Java.Util.Date a System.DateTime
  • Cómo obtener el día, año, horas, min Individualmente a partir del formato de fecha "aaaa-MM-dd'T'HH: mm: ss.SSSZ"?
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.