Сбой приложения при получении push-уведомления и закрытии приложения - PullRequest
0 голосов
/ 07 июня 2018

Мое приложение Xamarin для Android падает при получении push-уведомления ..!

Вот ошибка:

System.NotSupportedException: Не удалось активировать JNI Handle 0xbee2dcd8 (key_handle 0x1302a92b) типа Java "md53ff9574f15073ce2830b1527af878807 / GcmListener" в качестве управляемого типа "DriversInfo.Droid.GcmListener".---> System.ArgumentNullException: значение не может быть нулевым.

Вот код для получения уведомления (GCMListener):

public override void OnMessageReceived(string from, Bundle data)
    {
        System.Diagnostics.Debug.WriteLine($"notification data : {data}");

        //Log.Debug("MyGcmListenerService", "OnMessageReceived");
        var message = data.GetString("message");
        System.Diagnostics.Debug.WriteLine("MyGcmListenerService - From:    " + from);
        System.Diagnostics.Debug.WriteLine("MyGcmListenerService - Message: " + message);

        var isSilent = data.GetBoolean("isSilent");

        System.Threading.Tasks.Task.Run(async () => await this.Engine.ResumeAsync());

        if (!isSilent)
        {
            NotificationHelper.DisplayNotification(this, "Drivers Info", message);
        }
    }

И код для отображения уведомления:

        public static bool DisplayNotification(Context context, string title, string desc,
                                           NotificationId notificationId = 0)
    {
        // Set up an intent so that tapping the notifications returns to this app:
        Intent intent = new Intent(context, typeof(MainActivity));
        intent.SetFlags(ActivityFlags.ClearTop | ActivityFlags.SingleTop);

        // Create a PendingIntent; we're only using one PendingIntent (ID = 0):
        const int pendingIntentId = 0;
        PendingIntent pendingIntent =
            PendingIntent.GetActivity(context, pendingIntentId, intent, PendingIntentFlags.UpdateCurrent);

        var builder = new NotificationCompat.Builder(context)
            .SetAutoCancel(true)
            .SetContentTitle(title)
            .SetContentText(desc)
            .SetContentIntent(pendingIntent)
            .SetSmallIcon(Resource.Drawable.Logo);

        //if (Settings.AppAcceptsSoundNotifications)
        builder.SetSound(RingtoneManager.GetDefaultUri(RingtoneType.Notification));

        // Build the notification:
        var notification = builder.Build();

        // Get the notification manager:
        var notificationManager = context.GetSystemService(Context.NotificationService) as NotificationManager;

        notificationManager?.Notify((int) notificationId, notification);
        return true;
    }

Я не писал этот код и хотел бы узнать о нем больше!Я немного разочарован новым разработчиком Xamarin / Android, и мне нужна помощь сообщества / объяснения.

Спасибо;)

РЕДАКТИРОВАТЬ

Вотподробнее о сбое приложения (без контекста):

Имя параметра AndroidRuntime: контекст в Autofac.ResolutionExtensions.ResolveService (контекст Autofac.IComponentContext, служба Autofac.Core.Service, System.Collections.Generic.IEnumerable 1[T] parameters) [0x00003] in <ca1ca41f44e0487e9a15b2f64e38c7de>:0 at Autofac.ResolutionExtensions.Resolve (Autofac.IComponentContext context, System.Type serviceType, System.Collections.Generic.IEnumerable 1 [T] параметров) [0x00007] в: 0 в Autofac.ResolutionExtensions.Resolve [TService] (контекст Autofac.IComponentContext, параметры System.Collections.Generic.IEnumerable`1 [T]) [0x00000] в:0 в Autofac.ResolutionExtensions.Resolve [TService] (контекст Autofac.IComponentContext) [0x00000] в: 0 в DriversInfo.Droid.GcmListener..ctor () [0x0000c] в <41c8506acadd4ded8f0bf3c09ac45dbb (0):.Object.6e5c2775-7f90-4dd7-a6af-e9481e583260 (intptr, object []) в Java.Interop.TypeManager.n_Activate (System.IntPtr jnienv, System.IntPtr jclass, System.IntPtr typename_ptr, System.IntPtr signature_ptr, System.IntPtr jobject, System.IntPtr parameters_ptr) [0x000df] в <52508bfa6a8a441688f64accb5488049>: 0 --- Конец внутренней трассировки стека исключений --- в Java.Inpeate.System.IntPtr jnienv, System.IntPtr jclass, System.IntPtr typename_ptr, System.IntPtr signature_ptr, System.IntPtr jobject, System.IntPtr parameters_ptr) [0x00168] в <52508bfa6a8a441688.ae816e3f-b83f-4390-af32-80f1fa8830a2 (intptr, intptr, intptr, intptr, intptr, intptr) в mono.android.TypeManager.n_activate (собственный метод) в mono.android.TypeManager.Aagererj: типа::md5c4b050970b34fabb7ecdb34ca8ce9387.GcmListener. (GcmListener.java:23) в java.lang.reflect.Constructor.newInstance (нативный метод) в java.lang.Class.newInstance (Class.java:16.Thread.Thread.ThreateSerateSecateSerateSerateSerateSecateSecateSerateSerateServiceShate)..java: 3657) в android.app.ActivityThread.access $ 2000 (ActivityThread.java:219)на android.app.ActivityThread $ H.handleMessage (ActivityThread.java:1818) на android.os.Handler.dispatchMessage (Handler.java:102) на android.os.Looper.loop (Looper.java:145) на android.app.ActivityThread.main (ActivityThread.java:6939) в java.lang.reflect.Method.invoke (собственный метод) в java.lang.reflect.Method.invoke (Method.java:372) в com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run (ZygoteInit.java:1404) на com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1199) </p>

...