Я можу знайти спосіб надсилання параметрів для моєї діяльності з мого сповіщення.
У мене є служба, яка створює сповіщення. Коли користувач натискає сповіщення, я хочу відкрити свою основну діяльність з деякими спеціальними параметрами. Наприклад, ідентифікатор елемента, щоб моя діяльність могла завантажуватись і представляти особливий перегляд деталей елемента. Більш конкретно, я завантажую файл, і коли файл завантажується, я хочу, щоб повідомлення було наміром, що при натисканні воно відкриває мою діяльність у спеціальному режимі. Я намагався використовувати putExtra
за своїм наміром, але, схоже, не витягую його, тому думаю, що я роблю це неправильно.
Код від моєї служби, яка створює Повідомлення:
// 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);
Код з моєї діяльності, який намагається отримати додатковий параметр із сповіщення:
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") );
}
Екстри завжди є нульовими, і я ніколи нічого не потрапляю до свого журналу.
Btw ... onCreate
запуск виконується лише тоді, коли починається моя діяльність, якщо моя діяльність вже розпочата, я також хочу зібрати додаткові дані та представити свою діяльність відповідно до пункту_id, який я отримую.
Будь-які ідеї?
PendingIntent.getActivity()
з прапоромPendingIntent.FLAG_UPDATE_CURRENT
, інакше ті самі додатки будуть повторно використані для кожного повідомлення.