Ich schreibe gerade eine Android App für die Schule.
Darin wird alle 15 Minuten abgefragt ob einer meiner Kontakte Geburtstag hat und wenn ja gibt es eine Notifikation. So weit funktioniert das schon mal. Nun möchte ich aber, wenn die Notification einmal angeklickt wurde, dass sie nicht mehr gesendet wird. Also auch nicht in 15 Minuten, wenn das nächste Mal die Überprüfung ausgeführt wird. Kann mir da jemand helfen?
Darin wird alle 15 Minuten abgefragt ob einer meiner Kontakte Geburtstag hat und wenn ja gibt es eine Notifikation. So weit funktioniert das schon mal. Nun möchte ich aber, wenn die Notification einmal angeklickt wurde, dass sie nicht mehr gesendet wird. Also auch nicht in 15 Minuten, wenn das nächste Mal die Überprüfung ausgeführt wird. Kann mir da jemand helfen?
Java:
public class BirthdayNotifyService extends Service {
final static String STOP_SERVICE_BROADCAST_KEY="StopServiceBroadcastKey";
final static int RQS_STOP_SERVICE = 1;
NotifyServiceReceiver notifyServiceReceiver;
ArrayList<MyContact> birthdayList;
private Date geburtstagNeu;
String notificationText = "Jemand hat Geburtstag!";
@Override
public void onCreate() {
notifyServiceReceiver = new NotifyServiceReceiver();
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
birthdayList = new BirthdayDataFactory().getContacts(this);
int mNotificationId = 001;
Long l = null;
for (int i = 0; i < birthdayList.size(); i++) {
geburtstagNeu = birthdayList.get(i).getDate();
if(geburtstagNeu != null) {
if(birthdayList.get(i).hasBirthday()) {
notificationText = birthdayList.get(i).getName();
l = birthdayList.get(i).getID();
mNotificationId = Integer.valueOf(l.intValue());
NotificationCompat.Builder mBuilder =
new NotificationCompat.Builder(this)
.setSmallIcon(R.drawable.ic_launcher)
.setContentTitle("Happy Birthday")
.setContentText(notificationText);
// Creates an explicit intent for an Activity in your app
Intent resultIntent = new Intent(this, MainActivity.class);
PendingIntent resultPendingIntent =
PendingIntent.getActivity(
this,
0,
resultIntent,
PendingIntent.FLAG_UPDATE_CURRENT
);
mBuilder.setContentIntent(resultPendingIntent);
NotificationManager mNotifyMgr =
(NotificationManager) getSystemService(NOTIFICATION_SERVICE);
// benachrichtigung wird ausgegeben
mNotifyMgr.notify(mNotificationId, mBuilder.build());
}
}
}
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
this.unregisterReceiver(notifyServiceReceiver);
super.onDestroy();
}
@Override
public IBinder onBind(Intent arg0) {
return null;
}
public class NotifyServiceReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context arg0, Intent arg1) {
int rqs = arg1.getIntExtra(STOP_SERVICE_BROADCAST_KEY, 0);
if (rqs == RQS_STOP_SERVICE){
stopSelf();
((NotificationManager) getSystemService(NOTIFICATION_SERVICE))
.cancelAll();
}
}
}
}
Zuletzt bearbeitet: