Witam
Mam problem z NotificationManagerem NotificationManager | Android Developers , a mianowicie z odczytywanie ze status bara które zdarzenie zostało właśnie kliknięte. Niestety nigdzie w dokumentacji nie mogę znaleźć tej opcji więc widocznie owa opcja nie istnieje. Przybliże mój problem ( w uproszczonym pseudokodzie):
public class Przypominacz extends Activity{
private PendingIntent pendingIntent;
public void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.przypomnienie);
//w tym fragmencie chodzi o to że jak aktywność jest uruchamiana 1wszy raz to wywoływana jest
//funkcja aktywujPrzypomnienia(id), w przeciwnym razie obsługa "klikniętego" przypomnienia
Bundle parametry=this.getIntent().getExtras();
Long id=(parametry!=null)?parametry.getLong("id"):null;
if(id!=null)aktywujPrzypomnienia(id);
else obslugaPrzypomnienia();
}
public void obslugaPrzypomnienia(){
//w przypadku kliknięcia notifikacji wywoływana jest tylko ta funkcja
AlertDialog.Builder alertDialog=new AlertDialog.Builder(this);
alertDialog.setCancelable(true);
alertDialog.setIcon(R.drawable.icon);
alertDialog.setTitle("yo");
alertDialog.setInverseBackgroundForced(true);
alertDialog.setPositiveButton("Koniec", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface DI, int ktory){
Intent intent=new Intent(Przypominacz.this, PrzypominaczReceiver.class);
pendingIntent=PendingIntent.getBroadcast(Przypominacz.this.getApplicationContext(), 1, intent, 0);
//i tutaj w miejsce tej jedynki musze odczytać id klikniętego przypomnienia
AlarmManager alarmManager=(AlarmManager)Przypominacz.this.getSystemService(Przypominacz.this.ALARM_SERVICE);
alarmManager.cancel(pendingIntent);
Przypominacz.this.onBackPressed();
}
});
alertDialog.setNegativeButton("Uśpij", new DialogInterface.OnClickListener(){
public void onClick(DialogInterface DI, int ktory){
DI.dismiss();
}
});
alertDialog.show();
}
public void aktywujPrzypomnienia(Long idNotatki){
// treść tej funkcji nie jest w sumie ważna, z bazy danych odczytywany jest id przypomnienia, a następnie
do{
totaj jest fragment odczytujący idAlarmu z bazy danych (nie istotny w moim problemie)
Intent intent=new Intent(this, PrzypominaczReceiver.class);
intent.putExtra("idAlarmu", idAlarmu);
pendingIntent=PendingIntent.getBroadcast(this.getApplicationContext(), idAlarmu, intent, 0);
AlarmManager alarmManager=(AlarmManager)this.getSystemService(this.ALARM_SERVICE);
alarmManager.setRepeating(AlarmManager.RTC_WAKEUP,
System.currentTimeMillis()+5*1000,
15*1000, pendingIntent);
}while(odczytaj notatke);
}
pomocnikBD.zamknij();
}
}
uprzedzając pytania zamieszczam klase Receiver:
public class PrzypominaczReceiver extends BroadcastReceiver{
private NotificationManager manager;
public void onReceive(Context context, Intent intent){
manager = (NotificationManager)context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new Notification(R.drawable.icon, "Wake up alarm", System.currentTimeMillis());
Intent intentNotifikacji=new Intent(context, Przypominacz.class);
intentNotifikacji.putExtra("idAlarmu", intent.getExtras().getInt("idAlarmu"));
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, intentNotifikacji, 0);
notification.setLatestEventInfo(context, String.valueOf(intent.getExtras().getInt("idAlarmu")), "tekst", contentIntent);
notification.flags = Notification.FLAG_ONGOING_EVENT|Notification.FLAG_INSISTENT|Notification.FLAG_AUTO_CANCEL;
}
}
Poszukuje sposobu aby odczytać idAlarmu z wysłanego wcześniej idAlarmu poprzez extras do receivera, a następnie aby w przypadku kliknięcia owego przypomnienia na statusBarze odczytanie tego id w zrestartowanej aktywności... jakieś pomysły bo już siedze z tym problemem z tydzień i nic nie wymyśliłem (żadne finalne statyczne pola mi nie pomagają)
Mam nadzieje że nie zamotałem zbytnio.
Pozdro