#java #android #firebase
#java #Android #firebase
Вопрос:
Я хочу открыть действие, скажем, SplashActivity
при нажатии на уведомление, независимо от click_action.
В настоящее время с уведомлением я получаю click_action для обработки пользовательского интерфейса, например
Если пользователь находится на странице профиля, и серверная команда обновила его профиль с консоли управления.
В этом случае приложение получает уведомление с помощью click_action profile_update.Приложение проверяет наличие click_action и обновляет страницу профиля.
До сих пор все было в порядке, но когда приложение работает в фоновом режиме и получает уведомление с помощью click_action profile_update и пользователь нажимает на уведомление — уведомление исчезает из панели уведомлений и никакая навигация не выполняется.
Я объявил SplashScreen
, что оно должно быть открыто при нажатии на уведомление следующим образом:
<activity
android:name=".SplashScreen"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
</activity>
Пользователь по-прежнему не перешел к SplashScreen
.
Комментарии:
1. пожалуйста, опубликуйте свой код дескриптора уведомления.
2. Итак, вы хотите выполнить то же действие, когда ваше приложение работает в фоновом режиме?
3. Привет @YogeshKatkar. Несколько советов по форматированию / написанию, которые вы найдете полезными. (1) разрывы абзацев лучше всего создавать с помощью двойного ввода, поскольку двойное
<br>
имеет другое семантическое значение; (2) личное местоимение пишется с заглавной буквы I без каких-либо исключений; (3) вопросы в идеале задаются без болтовни и разговорного материала, так что результирующий вопрос может быть полезен будущим читателям; (4) форматирование кода с помощью обратных меток обычно лучше всего использовать для кода и ввода-вывода, а не для выделения; (5) пожалуйста, используйте средство проверки орфографии, такое как Grammarly. У StackOverflow есть свой собственный способ форматирования текста.
Ответ №1:
При создании уведомления передайте намерение действия
NotificationManager notificationManager = (NotificationManager)
getSystemService(NOTIFICATION_SERVICE);
Intent intent = new Intent(this, SplashActivity .class);
PendingIntent pIntent = PendingIntent.getActivity(this, 0, intent,
PendingIntent.FLAG_UPDATE_CURRENT);
NotificationCompat.Builder builder = new NotificationCompat.Builder(this, CHANNEL_ID)
.setSmallIcon(R.mipmap.ic_launcher)
.setContentTitle("Prayer time")
.setContentText("Its " salatName " time.")
.setSmallIcon(R.mipmap.ic_launcher)
.setContentIntent(pIntent)**Pending intent has the intent of activity you want to open **
.addAction(R.drawable.close,"Dismiss",snoozePendingIntent)
.setAutoCancel(true)
.setWhen(System.currentTimeMillis())
.setPriority(NotificationCompat.PRIORITY_DEFAULT);
notificationManager.notify(0, builder.build());
Передайте намерение действия в ожидающее намерение, которое вы хотите открыть при нажатии на уведомление
Комментарии:
1. Спасибо за ответ @Bilwal. Это работает только тогда, когда click_action не упоминается в полезной нагрузке, но это не работает, если полезная нагрузка имеет click_action.