Как по нажатию на Notification открыть MainActivity и выполнить конкретный метод

Мне нужно чтобы по клику на уведомление пользователь попадал на главный экран и выполнялся метод void Out()

Как я могу это реализовать?

Сейчас использую такой вызова уведомлений

var resultIntent = new Intent(this, typeof(MainActivity));
            var builder = new NotificationCompat.Builder(this, CHANNEL_ID).SetPriority(1)
                          .SetAutoCancel(true) 
                          .SetContentTitle("Уведомление") 
                          .SetNumber(1) 
                          .SetSmallIcon(Resource.Drawable.Icon)
                          .SetContentText($"Описание"); 

var notificationManager = NotificationManagerCompat.From(this);
notificationManager.Notify(NOTIFICATION_ID, builder.Build());

Ответы (1 шт):

Автор решения: Andrew

Если @ЮрийСПб будет не в обиде, то я напишу ответ :) Для того чтобы открыть активность и выполнить метод вам нужно как уже было сказано в комментариях послать данные в активность о том что нужно сделать. Возьмем ваш код:

var resultIntent = new Intent(this, typeof(MainActivity));

Суть intent в том что можно послать данные в открываемую активность. Например вы можете послать какой-то идентификатор того что нужно сделать в активности:

intent.putExtra("some_data", data);

Дальше в активности вы "ловите" данные которые пришли в методе onCreate():

val action = intent.getIntExtra("some_data", 0) 

Как можно увидеть из принимающего intent там по-умолчанию у меня стоит 0, это например можно поставить такое число, но можно и любое другое. То есть суть данного приема в том что вы шлете например в активность число 1, и активность принимает это число 1, если ничего не шлете то будет по-умолчанию 0. Ну и в итоге, после того как вы приняли данные в активности, можно вызывать метод который вам нужно. Можно сделать через if или when. Подробнее про передачу данных через intent можно почитать здесь.

UPDATE

В активности которая будет принимать данные вы регистрируете данный receiver:

val filter = IntentFilter("identificator")
receiver = object : BroadcastReceiver() {
   override fun onReceive(context: Context, intent: Intent) {
      // your action
    }
}

registerReceiver(receiver, filter)

и дальше для отправки делаем так:

val inten = Intent()
inten.action = "identificator"
inten.putExtra("some_data", 3)
context.sendBroadcast(inten)

это общие сведения для отправки данных через receiver. Здесь указана информация про отправку таких данных из уведомления. Суть приблизительно одинакова, так как здесь тоже используются intent который нужно использовать в pending intent

→ Ссылка