Intereting Posts
Android-java: проверка булевого значения для null Android-переменные в strings.xml Отправка пакета с транзакцией фрагментов Android отправляет изображение на сервер через MultipartEntity – настройка Content-type? Android: autoLink не работает полностью на моем устройстве 4.4 Как получить идентификатор ресурса с известным именем ресурса? Проблема в строчном массиве в XML-файле: множественные замены, указанные в непозиционном формате и тег </ item>, где ожидается </ string-array> Имя папки макета для устройств 720×1280, как samsung galaxy s3 Нет программных кнопок для эмулятора ICS? NullPointerExcepetion Facebook sdk v4.5.0 при включении Proguard (при попытке входа в систему с использованием библиотеки Parse) Как установить кнопку «Отмена» в диалоговом окне «Прогресс»? Как запустить настройки непосредственно на странице «Беспроводные сети»? Android, могу ли я использовать putExtra для передачи нескольких значений Изменение вкладок ActionBar подчеркивает цвет программно Android: фокус на элементах TimePicker

Как определить, открыто ли приложение Android из сообщения «Уведомление»?

В общем, когда у меня есть уведомление на панели уведомлений и нажмите на него. Он открывает зарегистрированное приложение для этого сообщения.

В разделе «Активность запуска», как определить, открыто ли приложение от него?

И лучше. Как получить идентификатор уведомления в методе 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. Теперь он прошел!

Solutions Collecting From Web of "Как определить, открыто ли приложение Android из сообщения «Уведомление»?"

Вам нужно использовать 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 … Поэтому я решил так: когда вы получаете уведомление и нажимаете на него, приложение откроется (обычно оно открывает основную активность приложения ), И в дополнительных инструкциях вы можете найти некоторую информацию об этом уведомлении. Вы можете добавить параметры ключа / значения к уведомлениям, отправляемым на зарегистрированные устройства. Эти параметры будут добавлены в дополнительные задания.

Таким образом, вы можете действовать следующим образом: в своем уведомлении добавьте параметр, который представляет ваш идентификатор уведомления. Для esample «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... } 

И вы получите идентификатор уведомления. Таким образом, вы можете использовать эту информацию, например, для получения уведомления от своего db или других операций.