0

Ich versuche eine automatische Benachrichtigung um 9:00 Uhr zu erstellen.Einige Probleme mit zeitgesteuerten Benachrichtigungen (Android)?

Ich habe die folgenden Codes, aber ich bin nicht in der Lage eine automatische Benachrichtigung zu erhalten.

Und ich habe die erforderlichen Berechtigungen im Android Manifest-Datei hinzufügen.

Im MainActivity.class "onCreate Methode nannte ich die Funktion: setAlarm();

public void setAlarm() { 

    AlarmManager alarmMgr; 
    PendingIntent alarmIntent; 

    alarmMgr = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
    Intent intent = new Intent(getApplicationContext(), Notifications.class); 
    alarmIntent = PendingIntent.getBroadcast(getApplicationContext(), 1001, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

    Calendar calendar_now = Calendar.getInstance(); 
    Calendar calendar = Calendar.getInstance(); 
    calendar.setTimeInMillis(System.currentTimeMillis()); 
    calendar.set(Calendar.HOUR_OF_DAY, 9); 
    calendar.set(Calendar.MINUTE, 30); 

    alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 1, alarmIntent); 

    if(calendar_now.getTimeInMillis() == calendar.getTimeInMillis()) { 
    new Notifications().createNotification(getApplicationContext(), getIntent(), "Stock-Market Alert", "The Market opens shortly."); 
    } 

} 

Die Notifications.class sich wie folgt:

public class Notifications extends BroadcastReceiver { 

    public void onReceive(Context context, Intent intent) { 
    String notificationTitle = "Default Title", notificationMessage = "Default Message"; 

    createNotification(context, intent, notificationTitle, notificationMessage); 
    } 

    public void createNotification(Context context, Intent intent, String notificationTitle, String notificationMessage) { 

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

    PendingIntent pendingIntent = PendingIntent.getActivity(context, 1001, 
       new Intent(context, Repeating_activity.class), PendingIntent.FLAG_UPDATE_CURRENT); 

    NotificationCompat.Builder builder = new NotificationCompat.Builder(context) 
      .setSmallIcon(android.R.drawable.arrow_up_float) 
      .setContentTitle(notificationTitle) 
      .setContentText(notificationMessage) 
      .setTicker("Alert Message !") 
      .setAutoCancel(true) 
      .setSmallIcon(android.R.drawable.stat_sys_warning); 

    builder.setContentIntent(pendingIntent); 
    builder.setDefaults(NotificationCompat.DEFAULT_VIBRATE); 
    builder.setDefaults(NotificationCompat.DEFAULT_SOUND); 

    notificationManager.notify(1001, builder.build()); 
    } 
} 

Antwort

0

Dies geschieht, weil Sie versuchen Millisekunden vergleichen , selten werden Sie die gleiche Millisekunde erreichen (um nicht fast nie zu sagen). Fügen Sie auch Logik hinzu, um die Zeit auf dem Empfänger zu vergleichen. Versuchen Sie, den folgenden Code:

public void onReceive(Context context, Intent intent) { 
    Calendar cal = Calendar.getInstance(); 
    int currentHour = cal.get(Calendar.HOUR); 
    int currentMinute = cal.get(Calendar.MINUTE); 
    if (currentHour == 9 && currentMinute == 00) { 
     String notificationTitle = "Default Title", notificationMessage = "Default Message"; 
     createNotification(context, intent, notificationTitle, notificationMessage); 
    } 
} 

Und Ihre setalarm() -Methode wie folgt einfach sein kann:

public void setAlarm(){ 
     AlarmManager alarmMgr; 
     PendingIntent alarmIntent; 

     alarmMgr = (AlarmManager)getApplicationContext().getSystemService(Context.ALARM_SERVICE); 
     Intent intent = new Intent(getApplicationContext(), Notifications.class); 
     alarmIntent = PendingIntent.getBroadcast(getApplicationContext(), 1001, intent, PendingIntent.FLAG_UPDATE_CURRENT); 

     alarmMgr.setRepeating(AlarmManager.RTC_WAKEUP, calendar.getTimeInMillis(), 1000 * 60 * 1, alarmIntent); 

    } 
+0

leider immer noch nichts. Wenn ich die Zeit Constraint entfernen und eine onClick() verwenden, erscheint Mitteilung aber nichts mit einem unserer Code oben :( –

+0

Ist Ihr BroadcastReceiver auf AndroidManifest.xml erklärt? Versuchen Sie, eine Absicht auf onClick() zu senden zu verdoppeln überprüfen, ob die Problem ist der Alarmmanager oder der Empfänger. –

+0

Kein Problem. auf OnClick, die Benachrichtigung funktioniert –