2017-07-09 1 views
0

Laissez-moi avoir un ensemble de fois. Par exemple, {"11:40","11:55","16:15","20:05"}. Tout d'abord, je dois montrer une notification à 11:40, puis au 11:55 et ainsi de suite, jusqu'à la fin. Chaque notification a son propre titre et texte. Et ils ne devraient pas être mis à jour (je veux dire que si la notification qui a été affichée à 11h40 n'a pas été pressée ou supprimée de la barre d'état par l'utilisateur, la notification suivante ne doit pas être mise sur la notification précédente). Je sais comment montrer la notification en utilisant AlarmManager et BroadcastReceiver, mais je n'ai pas une bonne idée de la façon de résoudre ce problème. J'imagine la solution comme suit: Lorsque l'application a ouvert pour la première fois, j'ai mis l'alarme pour montrer la notification à index = 0 (où index est l'indice de tableau de fois). Lorsque la première notification a été affichée, je mets à jour index et règle l'alarme pour la notification suivante et ainsi de suite, jusqu'à la fin. À la fin, toute opération annule et aucune notification ne sera montrée. Mais je n'imagine pas comment construire cette idée. Comment résoudre ce problème? C'est possible? Ai-je besoin d'un Service pour cela? Pouvez-vous donner des mesures utiles pour résoudre ce problème?Comment afficher les notifications par rotation?

Répondre

0

Il suffit d'appeler cette méthode à des moments donnés.

private void notificationManager(Context context, String message,long time) { 

    try { 
     long when = //Set your own time here by passing it in the function 

     NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

     Log.v("message", "," + message); 

     Intent notificationIntent = new Intent(context, SplashActivity.class); 


     notificationIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP); 
     PendingIntent intent = PendingIntent.getActivity(context, 0, notificationIntent, 0); 

     NotificationCompat.Builder builder = new NotificationCompat.Builder(context); 
     builder.setAutoCancel(true); 
     builder.setContentTitle(context.getString(R.string.app_name)); 
     builder.setStyle(new NotificationCompat.BigTextStyle().bigText(message)); 
     builder.setContentText(message); 
     builder.setTicker(message); 
     builder.setLights(Color.GREEN, 500, 500); 
     builder.setWhen(when); 
     builder.setLargeIcon(BitmapFactory.decodeResource(getResources(), R.mipmap.ic_launcher)); 
     builder.setSmallIcon(R.mipmap.ic_launcher); 
     builder.setContentIntent(intent); 


     Notification notification = builder.build(); 
     notification.ledARGB = 0xFFff0000; 
     notification.flags = Notification.FLAG_SHOW_LIGHTS; 
     notification.ledOnMS = 100; 
     notification.ledOffMS = 100; 
     notificationManager.notify(1, notification); 

     PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE); 
     PowerManager.WakeLock wl = pm.newWakeLock(PowerManager.FULL_WAKE_LOCK | PowerManager.ACQUIRE_CAUSES_WAKEUP, "TAG"); 
     wl.acquire(15000); 

    } catch (Exception e) { 
     e.printStackTrace(); 
    } 

} 

juste passer le temps dans le builder.setWhen en millisecondes que vous pouvez faire en créant un objet Calendrier et réglage de l'heure en elle. Il planifiera automatiquement ces notifications et les affichera à leur heure respective. Utilisez une boucle for pour passer tout le temps et appelez la fonction.

Espérons que cet hepls

+0

setWhen (longtemps) N'EST PAS utilisé pour définir la date et l'heure de la notification de déclenchement. S'il vous plaît voir la documentation: https: //developer.android.com/reference/android/app/Notification.Builder.html#setWhen (long) https://stackoverflow.com/questions/15458705/how-can-i -set-time-and-date-for-notification – abay