Как по нажатию на 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 шт):
Если @ЮрийСПб будет не в обиде, то я напишу ответ :) Для того чтобы открыть активность и выполнить метод вам нужно как уже было сказано в комментариях послать данные в активность о том что нужно сделать. Возьмем ваш код:
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