Comment répéter la notification quotidienne sur une heure spécifique dans android par le service background

Hi je travaille sur l'application où j'ai mis la notification sur la date et l'heure saisies par l'utilisateur par le biais du service background. Maintenant je veux régler notification / alarme tous les jours à 18 heures pour demander à l'utilisateur veut-il ajouter une autre entrée? Comment puis-je y parvenir? Devrais-je utiliser le même service d'arrière-plan ou récepteur de radiodiffusion? S'il vous plaît me donner une meilleure solution pour cela et tutoriel sera une excellente idée. Merci à l'avance.

18
demandé sur user3458918 2014-05-03 08:26:46

2 réponses

paramétrez D'abord le Gestionnaire D'alarme 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éer une classe de récepteur de radiodiffusion "AlarmReceiver" dans cette raise 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 manifest, enregistrer récepteur pour la classe AlarmReceiver:

<receiver android:name=".AlarmReceiver"/>

aucune permission spéciale n'est requise pour déclencher des événements via alarm manager.

50
répondu Mr. N.V.Rao 2017-12-18 05:49:58

la réponse de N. V. Rao est correcte, mais n'oubliez pas de mettre le receiver balise à l'intérieur de la balise application dans le AndroidManifest.fichier xml:

<receiver android:name=".alarm.AlarmReceiver" />
1
répondu tommy 2017-12-15 05:58:44