Ich versuche Anwendung zu erstellen, die Benachrichtigung täglich zu einer bestimmten Zeit senden wird .. Ich verwende .setOngoing (true) und .setAutoCancel (true) weil ich die Benachrichtigung beibehalten möchte, es sei denn, der Benutzer öffnet die Anwendung, indem er auf die Benachrichtigung klickt. Aber wenn die Anwendung geöffnet wird, wird die Benachrichtigung ausgeblendet und nach einigen Sekunden erneut angezeigt. Wie kann ich die Benachrichtigung bei geöffneter Anwendung stoppen, aber nur zu bestimmten Zeiten?Android - Benachrichtigung wiederholt sich nach Aktivität Öffnen
MainActivity Code ist:
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Calendar calendar = Calendar.getInstance();
calendar.set(Calendar.HOUR_OF_DAY, 16);
calendar.set(Calendar.MINUTE, 6);
calendar.set(Calendar.SECOND, 0);
Intent intent = new Intent(MainActivity.this, AlarmReceiver.class);
PendingIntent pendingIntent = PendingIntent.getBroadcast(MainActivity.this, 0,intent, 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);
}
}
AlarmReceiver Klasse:
public class AlarmReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Intent intent1 = new Intent(context, MainActivity.class);
intent1.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
PendingIntent pendingIntent = PendingIntent.getActivity(context, 100, intent1, PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = (NotificationCompat.Builder) new NotificationCompat.Builder(context)
.setSmallIcon(R.drawable.ic_stat_name)
.setContentIntent(pendingIntent)
.setContentText("notification text")
.setContentTitle("notification title")
.setAutoCancel(true)
.setOngoing(true);
notificationManager.notify(100, builder.build());
}
}
Warum haben Sie '.setAutoCancel (true)' verwendet, während Sie die Benachrichtigung mit 'notification_id', also 100 in Ihrem Code, abbrechen können? – Wizard
Das Problem ist nicht, die Benachrichtigung abzubrechen, aber die Benachrichtigung erscheint nach einigen Sekunden wieder Wie kann ich aufhören, sie wieder zu sehen? –
Ich habe versucht, Benachrichtigung mit Benachrichtigungs-ID abzubrechen, aber Benachrichtigung erscheint wieder .. :( –