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
- ¿Qué te hace decidir descargar un juego a tu teléfono o computadora?
- ¿Son importantes las actividades de clasificación en la aplicación común? ¿Por qué?
- ¿Qué software de análisis se recomienda para aplicaciones móviles?
- ¿Se dan cuenta las personas de los cambios negativos que Facebook y Whatsapp han provocado en sus vidas?
- ¿Qué necesito saber para crear una aplicación de iOS como Slack?
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.