2017-07-04 4 views
0

Eigentlich habe ich Benachrichtigungen für meine App implementiert.Wenn ich auf eine Schaltfläche klicke, stellt es die Zeit für die Benachrichtigung und Broadcast-Empfänger anrufen.aber wenn die Anfrage für 3 Benachrichtigungen wie eine für 3 Uhr, 4 Uhr , 17 Uhr wird gesendet es senden nur 17 Uhr Benachrichtigung nicht 15 Uhr und 16 Uhr, weil 5 Uhr wurde eine zuletzt ausgelöst. Ich denke, es hängt mit der Benachrichtigungs-ID zusammen. Ich übermittle Identifikation als 0. was ich tun sollte. Bitte Hilfe. Senden von Benachrichtigungen mit Alarmmanager und Broadcast-Empfänger

meine Rundfunkempfänger

public class NotificationMessage extends BroadcastReceiver { 

    @Override 
    public void onReceive(Context context, Intent arg1) { 
     Log.d("Tag","dd"); 
     showNotification(context); 
    } 

    private void showNotification(Context context) { 
     Log.d("Tag", "visible"); 

     PendingIntent contentIntent = PendingIntent.getActivity(context, 0, 
       new Intent(context, MainActivity.class), 0); 


     NotificationCompat.Builder mBuilder = 
       new NotificationCompat.Builder(context) 
         .setSmallIcon(R.drawable.logo) 
         .setContentTitle("HURRY UP!!") 
         .setContentText("You have a session in 15 minutes."); 
     mBuilder.setContentIntent(contentIntent); 
     mBuilder.setDefaults(Notification.DEFAULT_SOUND); 
     mBuilder.setAutoCancel(true); 
     NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE); 

     SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(context); 
     int notiid = preferences.getInt("Id", -1); 

     int notification_id = notiid; 
     Log.d("ID1", String.valueOf(notification_id)); 

     mNotificationManager.notify(notification_id, mBuilder.build()); 
     Log.d("Tag","fuck u"); 
    } 
} 

das ist, wo ich bin Aufruf:

holder.accept.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(final View v) { 
       Call<AcceptedDealResponse> call = service.acceptedDeal(acceptDealRequest); 
       call.enqueue(new Callback<AcceptedDealResponse>() { 
        @Override 
        public void onResponse(Call<AcceptedDealResponse> call, Response<AcceptedDealResponse> response) { 
         AcceptedDealResponse response1 = response.body(); 
         if(response.body().getMessage().equals("Successful !! Deal Booked !!")){ 
          Log.d(",,", "" + " deal boooked"); 


          Log.d("jkhdjksahda ","" + newDealResponsess.getResponses().get(position).getTimeFrom()); 


          DateFormat formatter = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss.SSS'Z'"); 
          try { 
           date1 = formatter.parse(String.valueOf(newDealResponsess.getResponses().get(position).getTimeFrom())); 

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

          cal = Calendar.getInstance(); 
          cal.setTime(date1); 

          Log.d("Tag", String.valueOf(cal.get(Calendar.DATE))); 


          calendar = Calendar.getInstance(); 

          calendar.set(Calendar.YEAR, cal.get(Calendar.YEAR)); 
          calendar.set(Calendar.MONTH, cal.get(Calendar.MONTH)); 
          calendar.set(Calendar.DATE, cal.get(Calendar.DATE)); 
          calendar.set(Calendar.HOUR_OF_DAY, cal.get(Calendar.HOUR_OF_DAY)); 
          calendar.set(Calendar.MINUTE, cal.get(Calendar.MINUTE)); 
          calendar.set(Calendar.SECOND, cal.get(Calendar.SECOND)); 

          Log.d("hdfbsdhbfs :", "" + calendar.get(Calendar.HOUR_OF_DAY)); 
          Log.d("hdfbsdhbfs :", "" + calendar.get(Calendar.MINUTE)); 
          Log.d("hdfbsdhbfs :", "" + calendar.get(Calendar.SECOND)); 
          Log.d("hdfbsdhbfs :", "" + calendar.get(Calendar.DATE)); 
          Log.d("hdfbsdhbfs :", "" + calendar.get(Calendar.MONTH)); 
          Log.d("hdfbsdhbfs :", "" + calendar.get(Calendar.YEAR)); 

          Intent notificationmassage = new Intent(v.getContext(),NotificationMessage.class); 

          Log.d("Tag","cool"); 

          PendingIntent pi = PendingIntent.getBroadcast(v.getContext(), 0,notificationmassage, PendingIntent.FLAG_UPDATE_CURRENT); 


          Log.d("Tag","cooled"); 
          AlarmManager am = (AlarmManager) v.getContext().getSystemService(ALARM_SERVICE); 
          Log.d("Tag","cooooled"); 

          int id = (int) calendar.getTimeInMillis(); 

          SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(v.getContext()); 
          SharedPreferences.Editor editor = preferences.edit(); 
          editor.putInt("Id", id); 
          Log.d("ID", String.valueOf(id)); 
          editor.apply(); 


          am.set(AlarmManager.RTC_WAKEUP, (calendar.getTimeInMillis() - 900000), pi); 
+0

ja verschiedene IDs hinzufügen, es wird funktionieren – Pavya

+0

'Ich denke, es mit Benachrichtigung id' zusammenhängt Du hast recht. 'Ich übergebe id als 0', dann überschreibt es jedes Mal die Benachrichtigung mit dieser ID. "Was ich tun sollte" verwenden Sie verschiedene IDs –

+0

, wie Sie sie verwenden, das ist die Frage @ Pravin –

Antwort

0

Ich denke, das Problem in Ihrem PendingIntent mit gleichen REQUEST_CODE ist. Möglicherweise haben Sie dieselbe REQUEST_CODE mit Ihrer PendingInetent für alle alarm bei der Einstellung einer alarm mit AlarmManager verwendet.

Versuchen für verschiedene REQUEST_CODE für verschiedene PendingIntent verschiedenen Alarm verwenden.

Verwenden Sie den folgenden Code für die Einstellung Alarm mit AlarmManager:

int notiId = UNIQUE_ID; 

    // Intent 
    Intent mIntent = new Intent(getApplicationContext(), NotificationMessage.class); 
    mIntent.putExtra("NOTIFICATION_ID", notiId); 

    // Pending broadcast intent 
    PendingIntent mPI = PendingIntent.getBroadcast(getApplicationContext(), 
         notiId, mIntent, PendingIntent.FLAG_UPDATE_CURRENT); 

    // Alarm manager 
    AlarmManager alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE); 
    alarmManager.set(AlarmManager.RTC_WAKEUP, TARGET_TIME_MILLISECONDS, mPI); 

Hoffnung dies funktioniert ~

Verwandte Themen