2012-03-29 10 views
9

Tengo que hacer una aplicación en la que debo establecer una fecha y en esa fecha específica a las 9 en punto, debo hacer una notificación. ¿Cuál es el método más simple para hacer eso? (Quiero que la aplicación funcione incluso si reinicio mi teléfono o saco la batería). ¿AlarmManager es una solución?notificación de Android en una fecha específica

+12

¿cómo se puede esperar que Android funcione sin pilas? :) – waqaslam

+0

quise decir que todavía podía recibir esa notificación sin tener que acceder a la aplicación nuevamente – user1253236

+0

El OP obviamente significaba que si él/ella saca la batería y la reemplaza. –

Respuesta

15

Para programar una acción que puede utilizar el AlarmManager

Prueba este código es un trabajo para mí:

1/Declarar la CLASE BroadcastReceiver para iniciar la acción, esta clase puede estar dentro de su actividad o afuera en otro archivo de java

public class Receiver extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent intent) { 
     // TODO Auto-generated method stub 
     Toast.makeText(context, intent.getStringExtra("param"),Toast.LENGTH_SHORT).show(); 
    } 

} 

2/Dentro de su método OnCreate poner este código

AlarmManager alarms = (AlarmManager)this.getSystemService(Context.ALARM_SERVICE); 

    Receiver receiver = new Receiver(); 
    IntentFilter filter = new IntentFilter("ALARM_ACTION"); 
    registerReceiver(receiver, filter); 

    Intent intent = new Intent("ALARM_ACTION"); 
    intent.putExtra("param", "My scheduled action"); 
    PendingIntent operation = PendingIntent.getBroadcast(this, 0, intent, 0); 
    // I choose 3s after the launch of my application 
    alarms.set(AlarmManager.RTC_WAKEUP, System.currentTimeMillis()+3000, operation) ; 

Inicie su aplicación a Toast aparecerá después de 3 segundos, por lo que puede cambiar "System.currentTimeMillis() + 3000" con la hora de activación.

+0

Funciona perfectamente. Esto debe ser aceptado como la respuesta. – user1531978

3

Debe crear la aplicación como android service.

Un servicio es un componente de aplicación que puede realizar de larga duración operaciones en segundo plano y no proporciona una interfaz de usuario. Otro componente de aplicación puede iniciar un servicio y continuará para ejecutarse en segundo plano incluso si el usuario cambia a otra aplicación . Además, un componente puede vincularse a un servicio al interactuar con él e incluso realizar una comunicación entre procesos (IPC). Por ejemplo, un servicio puede manejar transacciones de red, reproducir música, realizar E/S de archivo o interactuar con un proveedor de contenido, todo desde el fondo .

1

El administrador de alarmas es la solución, supongo. debe configurar el administrador de alarmas a una hora específica y luego hacer que llame a la notificación en su inicio. y esto debe implementarse dentro de un servicio. Espero que haya ayudado.

+0

no, no lo hizo, pero gracias de todos modos – user1253236

4

Debe usar un AlarmManager para configurar una alarma del tipo RTC_WAKEUP.

Desde el docs:

Cuando se dispara una alarma, la intención que había sido registrada por ello es transmitido por el sistema, el inicio automático de la aplicación de destino si no se está ejecutando. alarmas registradas son retenidos mientras el dispositivo está dormido (y, opcionalmente, puede despertar el dispositivo hasta si se apagan durante ese tiempo), pero se borrará si se apaga y se reinicia .

Así que esto significa que:

  • que no es necesario un servicio que se ejecuta continuamente para lograr este objetivo.
  • Es posible que necesite un BroadcastListener que escuche el evento BOOT_COMPLETE para volver a registrar la alarma después de reiniciar el dispositivo.
Cuestiones relacionadas