Как активировать действие с помощью локального уведомления, созданного из удаленного уведомления

Я успешно создал локальное уведомление, которое запускает действие, но по какой-то причине, когда это локальное уведомление создается из обработчика удаленного уведомления, действие не запускается, когда локальное уведомление используется пользователем. Кажется, что ошибка или исключение не выбрасываются.

Ниже приведен код, который создает локальное уведомление. Примечание. Я использую Xamarin. Интересно, возможно ли это как-то связать разрешения (удаленные обработчики уведомлений, возможно, не могут создавать намерения для запуска действий?).

private void CreateNotification(string title, string desc) { var uiIntent = new Intent(this, typeof(ConversationActivity)); var stackBuilder = TaskStackBuilder.Create(this); stackBuilder.AddParentStack(Java.Lang.Class.FromType(typeof(ConversationActivity))); stackBuilder.AddNextIntent(uiIntent); PendingIntent pendingIntent = stackBuilder.GetPendingIntent(0, (int)PendingIntentFlags.UpdateCurrent); var notification = new NotificationCompat.Builder(this) .SetAutoCancel(true) // Remove the notification once the user touches it .SetContentIntent(pendingIntent) .SetContentTitle(title) .SetSmallIcon(Resource.Drawable.AppIcon) .SetContentText(desc) .SetDefaults((int)(NotificationDefaults.Sound | NotificationDefaults.Vibrate)) ; // Set the notification info // we use the pending intent, passing our ui intent over which will get called // when the notification is tapped. var notificationManager = GetSystemService(Context.NotificationService) as NotificationManager; notificationManager.Notify(1, notification.Build()); } 

Я все еще не уверен, что случилось с моей первоначальной попыткой, но я узнал, что могу исправить это, изменив Intent использовать имя компонента вместо вида действия или вида деятельности:

  private void SendNotification() { var nMgr = (NotificationManager)this.GetSystemService(NotificationService); var notification = new Notification(Resource.Drawable.AppIcon, "Incoming Dart"); var intent = new Intent(); intent.SetComponent(new ComponentName(this, "dart.androidapp.ContactsActivity")); var pendingIntent = PendingIntent.GetActivity(this, 0, intent, 0); notification.SetLatestEventInfo(this, "You've got something to read", "You have received a message", pendingIntent); nMgr.Notify(0, notification); } 

Вы должны иметь возможность вызвать его с помощью typeof (…). Код, который вы отправили первым, сильно отличается от последнего. Попробуйте, если это сработает для вас:

 private void SendNotification() { var nMgr = (NotificationManager)this.GetSystemService(NotificationService); var notification = new Notification(Resource.Drawable.AppIcon, "Incoming Dart"); var intent = new Intent(this, typeof(ContactsActivity)); //intent.SetComponent(new ComponentName(this, "dart.androidapp.ContactsActivity")); var pendingIntent = PendingIntent.GetActivity(this, 0, intent, 0); notification.SetLatestEventInfo(this, "You've got something to read", "You have received a message", pendingIntent); nMgr.Notify(0, notification); } 

Привет, Андрей для меня, рев, отлично работает

 NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); Notification notification = new Notification(R.drawable.ic_launcher, "Hello Chitta!", System.currentTimeMillis()); Intent intent = new Intent(Intent.ACTION_SEND); intent.setType("message/rfc822"); intent.putExtra(Intent.EXTRA_EMAIL , new String[]{"jdsjdjbdf@gmail.com"}); intent.putExtra(Intent.EXTRA_SUBJECT, "Hello CR!"); intent.putExtra(Intent.EXTRA_TEXT , "This is the body of email"); PendingIntent pendingIntent = PendingIntent.getActivity(getApplicationContext(), 0, intent, 0); notification.setLatestEventInfo(getApplicationContext(), "Send an e-mail", "Ha ha", pendingIntent); notificationManager.notify(742134, notification); 

Говорят о чем-то другом?

Intereting Posts
Отправить уведомление о полезной нагрузке с помощью устройства node-gcm на устройство Android Camera.open () блокирует поток пользовательского интерфейса Где видна метка на ClipData? Студия Android – добавьте библиотеку из github Почему Android O не работает с «не принадлежит этому FragmentManager!» Программно подключаться к Bluetooth-гарнитуре из приложения Android Android CheckBoxPreference: как отключить и включить другие настройки при изменении предпочтений Ошибка при открытии не удалось: ошибка EACCES (Permission denied) при попытке записать данные на SD-карту в Android 5.1, почему? Robolectric говорит, что «AndroidManifest.xml не найден» Как имитировать bluetooth на Android-эмуляторе Обнаружение изменения вкладки ViewPager внутри фрагмента Http: // ссылка href не работает в Android Android Studio: «Предупреждение libpng: iCCP: не распознавание известного профиля sRGB, который был отредактирован» Выполнить Javascript в HTML-файле с помощью Android Проверьте, вызван ли onStop из пользовательского взаимодействия или затемнение экрана