Mogę znaleźć sposób na przesłanie parametrów do mojej aktywności z mojego powiadomienia.
Mam usługę, która tworzy powiadomienie. Gdy użytkownik kliknie powiadomienie, chcę otworzyć moją główną aktywność z pewnymi specjalnymi parametrami. Np. Identyfikator przedmiotu, więc moja aktywność może załadować i przedstawić specjalny widok szczegółów przedmiotu. Mówiąc dokładniej, pobieram plik, a gdy plik jest pobierany, chcę, aby powiadomienie miało taki zamiar, że po kliknięciu otwiera moją aktywność w trybie specjalnym. Próbowałem użyć putExtra
zgodnie z moją intencją, ale nie mogę tego wydobyć, więc myślę, że robię to źle.
Kod z mojej usługi, który tworzy powiadomienie:
// construct the Notification object.
final Notification notif = new Notification(R.drawable.icon, tickerText, System.currentTimeMillis());
final RemoteViews contentView = new RemoteViews(context.getPackageName(), R.layout.custom_notification_layout);
contentView.setImageViewResource(R.id.image, R.drawable.icon);
contentView.setTextViewText(R.id.text, tickerText);
contentView.setProgressBar(R.id.progress,100,0, false);
notif.contentView = contentView;
Intent notificationIntent = new Intent(context, Main.class);
notificationIntent.putExtra("item_id", "1001"); // <-- HERE I PUT THE EXTRA VALUE
PendingIntent contentIntent = PendingIntent.getActivity(context, 0, notificationIntent, 0);
notif.contentIntent = contentIntent;
nm.notify(id, notif);
Kod z mojej aktywności, która próbuje pobrać dodatkowy parametr z powiadomienia:
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Bundle extras = getIntent().getExtras();
if(extras != null){
Log.i( "dd","Extra:" + extras.getString("item_id") );
}
Dodatki są zawsze zerowe i nigdy nie dostaję niczego do mojego dziennika.
Przy okazji ... onCreate
jest uruchamiane tylko wtedy, gdy moja aktywność się rozpoczyna, jeśli moja aktywność już się rozpoczęła Chcę również zebrać dodatki i przedstawić moją aktywność zgodnie z otrzymanym item_id.
Jakieś pomysły?
PendingIntent.getActivity()
z flagąPendingIntent.FLAG_UPDATE_CURRENT
, w przeciwnym razie te same dodatki będą ponownie wykorzystane przy każdym powiadomieniu.