Salut, je travaille sur l'application où j'ai défini la notification sur la date et l'heure entrées par l'utilisateur via le service en arrière-plan. Maintenant, je veux définir une notification/alarme quotidiennement à 18 h pour demander à l'utilisateur s'il veut ajouter une autre entrée? Comment puis-je atteindre cet objectif? Dois-je utiliser le même service d'arrière-plan ou le même récepteur de diffusion? Veuillez me donner une meilleure solution pour cela et le tutoriel sera une excellente idée. Merci d'avance.
Réglez d'abord le gestionnaire d'alarmes comme ci-dessous
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 18);
calendar.set(Calendar.MINUTE, 30);
calendar.set(Calendar.SECOND, 0);
Intent intent1 = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0,intent1, PendingIntent.FLAG_UPDATE_CURRENT);
AlarmManager am = (AlarmManager) MainActivity.this.getSystemService(MainActivity.this.ALARM_SERVICE);
am.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), AlarmManager.INTERVAL_DAY, pendingIntent);
Créez une classe de récepteur de diffusion "AlarmReceiver" dans cette augmentation des notifications lorsque onReceive
public class AlarmReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
long when = System.currentTimeMillis();
NotificationManager notificationManager = (NotificationManager) context
.getSystemService(Context.NOTIFICATION_SERVICE);
Intent notificationIntent = new Intent(context, EVentsPerform.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 0,
notificationIntent, PendingIntent.FLAG_UPDATE_CURRENT);
Uri alarmSound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
NotificationCompat.Builder mNotifyBuilder = new NotificationCompat.Builder(
context).setSmallIcon(R.drawable.applogo)
.setContentTitle("Alarm Fired")
.setContentText("Events to be Performed").setSound(alarmSound)
.setAutoCancel(true).setWhen(when)
.setContentIntent(pendingIntent)
.setVibrate(new long[]{1000, 1000, 1000, 1000, 1000});
notificationManager.notify(MID, mNotifyBuilder.build());
MID++;
}
}
et dans le fichier manifeste, enregistrez le récepteur pour la classe AlarmReceiver:
<receiver Android:name=".AlarmReceiver"/>
Aucune autorisation spéciale n'est requise pour déclencher des événements via le gestionnaire d'alarmes.
La réponse de N.V.Rao est correcte, mais n'oubliez pas de mettre la balise receiver
à l'intérieur de la balise d'application dans le fichier AndroidManifest.xml:
<receiver Android:name=".alarm.AlarmReceiver" />