Как открыть такое же действие при нажатии на уведомление в Android?

#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.