Cómo generar una notificación diaria a las 8 a.m. en mi aplicación de Android

He enfrentado este problema antes. Por lo tanto, me complacería ayudarlo para que no pierda mucho tiempo como lo hice. Intentaré ser lo más simple y conciso posible.

  • Obtenga el servicio de alarma del sistema.
  • Haga un intento pendiente, pasando el nombre de la clase del receptor de transmisión.
  • Haga un objeto de calendario y establezca la hora también a las 8 am.
  • Compruebe si la hora actual es pasada 8. Si es así, agregue otro día.
  • Llame al método de repetición establecido de la clase AlarmManager.

Código de muestra para el mismo:

alarmManager = (AlarmManager) getSystemService (ALARM_SERVICE); alarmIntent = nueva intención (contexto del archivo actual, AlarmReceiver1.class); // AlarmReceiver1 = receptor de difusión

pendienteIntent = PendingIntent.getBroadcast (Menu.this, 0, alarmIntent, PendingIntent.FLAG_UPDATE_CURRENT);
alarmIntent.setData ((Uri.parse (“custom: //” + System.currentTimeMillis ())));
alarmManager.cancel (PendienteIntento);

Calendar alarmStartTime = Calendar.getInstance ();
Calendario ahora = Calendar.getInstance ();
alarmStartTime.set (Calendar.HOUR_OF_DAY, 8);
alarmStartTime.set (Calendar.MINUTE, 00);
alarmStartTime.set (Calendar.SECOND, 0);
if (now.after (alarmStartTime)) {
Log.d (“Hey”, “Agregado un día”);
alarmStartTime.add (Calendar.DATE, 1);
}

alarmManager.setRepeating (AlarmManager.RTC_WAKEUP, alarmStartTime.getTimeInMillis (), AlarmManager.INTERVAL_DAY, pendienteIntento);
Log.d (“Alarma”, “Alarmas configuradas para las 8 am todos los días”);

  • Llegando a la clase de receptor de difusión. Debe registrar su receptor de difusión en el manifiesto. Esto hará que reciba eventos de reloj.
  • Anule el método onReceive de este receptor de transmisión y realice una notificación allí mismo o realice un servicio de creación de notificaciones separado y cree y muestre su notificación allí.

El fragmento de código manifiesto:

El fragmento de código del receptor de difusión:

La clase pública AlarmReceiver1 extiende BroadcastReceiver {

@Anular
public void onReceive (contexto de contexto, intento de intención) {
Intención service1 = new Intent (contexto, NotificationService1.class);
service1.setData ((Uri.parse (“custom: //” + System.currentTimeMillis ())));
context.startService (servicio1);
}

Fragmento de código de servicio de creación de notificaciones:

NotificationService1 de clase pública extiende IntentService {

NotificationManager privado notificationManager;
privado pendiente pendiente pendiente pendiente;
private static int NOTIFICATION_ID = 1;
Notificación de notificación;
@Anular
vacío protegido onHandleIntent (intento de intención) {
contexto de texto = this.getApplicationContext ();
notificaciónManager = (NotificationManager) context.getSystemService (Context.NOTIFICATION_SERVICE);
Intención mIntent = nueva intención (esto, actividad que se abrirá después de hacer clic en la notificación);
Bundle bundle = new Bundle ();
bundle.putString (“prueba”, “prueba”);
mIntent.putExtras (paquete);
pendienteIntent = PendingIntent.getActivity (contexto, 0, mIntent, PendingIntent.FLAG_UPDATE_CURRENT);

Recursos res = this.getResources ();
NotificationCompat.Builder builder = nuevo NotificationCompat.Builder (este);
Uri soundUri = RingtoneManager.getDefaultUri (RingtoneManager.TYPE_ALARM);
notificación = nueva NotificationCompat.Builder (esto)
.setContentIntent (PendienteIntento)
.setSmallIcon (R.drawable.ic_launcher)
.setLargeIcon (BitmapFactory.decodeResource (res, R.drawable.ic_launcher))
.setTicker (“valor de ticker”)
.setAutoCancel (verdadero)
.setPriority (8)
.setSound (soundUri)
.setContentTitle (“Notif title”)
.setContentText (“Texto”). build ();
notify.flags | = Notification.FLAG_AUTO_CANCEL | Notification.FLAG_SHOW_LIGHTS;
notify.defaults | = Notificación.DEFAULT_SOUND | Notificación.DEFAULT_VIBRATE;
notificación.ledARGB = 0xFFFFA500;
notificación.ledOnMS = 800;
notificación.ledOffMS = 1000;
notificaciónManager = (NotificationManager) getSystemService (NOTIFICATION_SERVICE);
notifyManager.notify (NOTIFICATION_ID, notificación);
Log.i (“notif”, “Notificaciones enviadas”);

}

}

Ahí tienes. Eso es.
Espero que esto ayude.

El código es simple pero efectivo, siga estos pasos

  • Crea una actividad para seleccionar una fecha en el futuro
  • Después de seleccionar una fecha, pásala a un servicio para tratarla
  • Crea una alarma para la fecha seleccionada
  • Cuando se activa esta alarma, aparece una notificación en la barra del sistema
  • Al hacer clic en la notificación, el usuario volverá a su aplicación

Nota: si necesita más información simplemente navegue en el desarrollo de google / android

¿Es eso una notificación push?
En ese caso, debe hacer una aplicación básica de Android. Motivo: la notificación push solo la recibe una aplicación.
Simplemente cree una aplicación básica y programe una notificación automática. El tutorial sobre la configuración de GCM push está disponible en masa en Internet. Solo google por lo mismo

Tu pregunta es muy común

  1. Si eres desarrollador, mira esto. “Notificaciones de Firebase | Firebase ”
  2. Si eres simple usuario. ”

Una pregunta similar surgió en mi mente y luego la busco en google. Entonces stackoverflow me ayudó. También puede consultar este enlace.

¿Cómo dar notificaciones en Android en un tiempo específico?

Usar la aplicación todoist