2010-11-03 20 views
13

Estoy tratando de crear una notificación utilizando el Administrador de notificaciones de Android, sin embargo, el truco es que quiero que la notificación aparezca 30 días en el futuro. En mi código estoy haciendo esto:Android Delayed Notification

Intent notificationIntent = new Intent(this, MyClass.class); 
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, 0); 
long when = System.currentTimeMillis() + (30 * 24 * 3600 * 1000); 
Notification notification = new Notification(R.drawable.some_image, "A title", when); 
notification.setLatestEventInfo(getApplicationContext(), "You're late", "Some description", contentIntent); 
NotificationManager nm = (NotificationManager) getSystemService(NOTIFICATION_SERVICE); 
nm.notify(NOTIFY_ATTEND_ID, notification); 

Sin embargo, la notificación sigue apareciendo de forma instantánea. Según lo que leí, el parámetro "cuándo" para el constructor de notificaciones solo se usa para ordenar las notificaciones en la barra de estado. ¿Hay alguna forma de hacer que la notificación aparezca en una fecha/hora futura? Gracias por adelantado.

+0

Haciéndolo aparecer 30 días en el futuro no es trivial. Las alarmas y los matan en el arranque. Tendría que mantener un servicio o algo – Falmarri

Respuesta

4

¿Hay alguna forma de hacer que la notificación aparezca en una fecha/hora futura?

Como sugiere Falmarri, tendrá que manejar esto por sí mismo, aunque no estoy de acuerdo con su enfoque. Tendrá que usar AlarmManager. Sin embargo, soy escéptico de que AlarmManager funcione durante 30 días, aunque puedes intentarlo. Es posible que necesite usar AlarmManager para una tarea diaria/semanal para programar las notificaciones de ese día/semana a través de alarmas separadas. También necesitará reconstituir esta lista de alarmas en un reinicio, ya que se borran, como sugiere Falmarri.

+0

Gracias por el consejo Commons. Echaré un vistazo al AlarmManager y veré si eso funciona. Como también estoy ejecutando una base de datos SQLite en esta aplicación, puedo almacenar parte de la información de notificación allí. Dejaré que ya sepas cómo va. – Jeff

+0

Gracias nuevamente Falmarri y CommonsWare. Tus soluciones funcionaron para mí. Terminé siguiendo la demostración de API de AlarmController: http://developer.android.com/resources/samples/ApiDemos/src/com/example/android/apis/app/AlarmController.html. – Jeff

Cuestiones relacionadas