Ответ 1
Вам нужно использовать putExtra(ID_KEY,id)
при создании Intent
для запуска приложения, а в вашем методе onCreate()
вы можете использовать getIntent().getExtras().getInt(ID_KEY);
для получения вашего пройденного id integer
.
В общем, когда у меня есть уведомление на панели уведомлений и нажмите на него. Он открывает зарегистрированное приложение для этого сообщения.
В процессе запуска, как определить, открыто ли приложение от него?
и лучше. Как получить идентификатор уведомления по методу OnCreate()?
Обновить: из @Ovidiu - вот мой код putExtra, чтобы нажать
Notification notification = new Notification(icon, tickerText, System.currentTimeMillis());
notification.contentView = contentView;
Intent notificationIntent = new Intent(this, Startup.class);
notificationIntent.putExtra("JOBID", jobId);
PendingIntent contentIntent = PendingIntent.getActivity(this, 0, notificationIntent, PendingIntent.FLAG_ONE_SHOT);
notification.flags = Notification.FLAG_AUTO_CANCEL;
notification.contentIntent = contentIntent;
mNotificationManager.notify(jobId, notification);
а в главной операции "Startup.java" код
Intent intent = this.getIntent();
if (intent != null && intent.getExtras() != null && intent.getExtras().containsKey("JOBID")) {
int jobID = this.getIntent().getExtras().getInt("JOBID");
if (jobID > 0) {
}
}
intent.getExtras() всегда возвращает null. Оказывается, мне нужно передать PendingIntent.FLAG_ONE_SHOT. Теперь он прошел!
Вам нужно использовать putExtra(ID_KEY,id)
при создании Intent
для запуска приложения, а в вашем методе onCreate()
вы можете использовать getIntent().getExtras().getInt(ID_KEY);
для получения вашего пройденного id integer
.
Код начальной активности будет выглядеть так: иначе, как только это произойдет из уведомления GCM, с тех пор всякий раз, когда Activity происходит из списка Recent, он скажет, что это происходит из уведомления GCM, что неверно.
Intent intent = this.getIntent();
if (intent != null && intent.getExtras() != null && intent.getExtras().containsKey("JOBID") && (intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) == 0) {
int jobID = this.getIntent().getExtras().getInt("JOBID");
if (jobID > 0) {
}
}
У меня была такая же проблема, и я не понимаю, почему я должен использовать метод putExtra... Итак, я решил так: когда вы получаете уведомление и нажимаете на него, приложение открывается (обычно это открывает главное приложение деятельность), а в дополнениях вы можете найти некоторую информацию об этом уведомлении. Вы можете добавить параметры ключ/значение к уведомлениям, отправляемым на зарегистрированные устройства. Эти параметры будут добавлены в дополнение к цели.
Таким образом, вы можете действовать так: в вашем уведомлении добавьте параметр, который представляет ваш идентификатор уведомления.
Например, "messageId" → "abc", где abc - ваш идентификатор уведомления.
Затем в своей основной деятельности вы можете выполнять:
if (getIntent().getExtras().keySet().contains("messageId")) {
// you opened the app from a notification
String messageId = getIntent().getStringExtra("messageId");
// do domething...
} else {
// you opened the app normally
// do domething...
}
И вы получите идентификатор уведомления. Таким образом, вы можете использовать эту информацию, например, для получения уведомления от вашей базы данных или других операций.