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?
- Android: ejemplo de getRelativeTime
- ¿Cómo evitar que el usuario cambie la fecha / hora del sistema (en Android)?
- Cómo incrementar el tiempo en 1 hora
- ¿Cómo manejar las diferencias de la base de datos de horarios de JodaTime y Android?
- Android get Tiempo UTC actual
- La hora del servidor se establece automáticamente en mi dispositivo en mi evento de clic de botón.
- ¿Cómo obtener eventos en las últimas 24 horas con SQLite?
- Cómo imprimir local timezone en formato posix en java (android)?
- Cómo obtener el tiempo y la fecha del sello de fecha y hora
- System.currentTimeMillis () devuelve la hora UTC?
- ¿Está la API Java 8 New Date disponible en Android N?
- Cómo almacenar datetime en SQLite
- Fecha y hora de conversión de Android en milisegundos
- Programáticamente obtener el tiempo del operador de red (android)
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
- Obtenga la hora del servidor
<?php echo date("Ymd.His "); ?>
- ¿Qué vista se debe utilizar para el nuevo diseño del material?
- Cómo eliminar filas en SQLite con múltiples args donde?