diff --git a/packages/firebase_messaging/firebase_messaging/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingBackgroundExecutor.java b/packages/firebase_messaging/firebase_messaging/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingBackgroundExecutor.java index 743f171c70e4..742e5a577be4 100644 --- a/packages/firebase_messaging/firebase_messaging/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingBackgroundExecutor.java +++ b/packages/firebase_messaging/firebase_messaging/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingBackgroundExecutor.java @@ -55,6 +55,10 @@ public class FlutterFirebaseMessagingBackgroundExecutor implements MethodCallHan */ public static void setCallbackDispatcher(long callbackHandle) { Context context = ContextHolder.getApplicationContext(); + if (context == null) { + Log.e(TAG, "Context is null, cannot continue."); + return; + } SharedPreferences prefs = context.getSharedPreferences(FlutterFirebaseMessagingUtils.SHARED_PREFERENCES_KEY, 0); prefs.edit().putLong(CALLBACK_HANDLE_KEY, callbackHandle).apply(); @@ -176,6 +180,12 @@ public void startBackgroundIsolate(long callbackHandle, FlutterShellArgs shellAr // lookup will fail. FlutterCallbackInformation flutterCallback = FlutterCallbackInformation.lookupCallbackInformation(callbackHandle); + + if (flutterCallback == null) { + Log.e(TAG, "Failed to find registered callback"); + return; + } + DartExecutor executor = backgroundFlutterEngine.getDartExecutor(); initializeMethodChannel(executor); diff --git a/packages/firebase_messaging/firebase_messaging/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingPlugin.java b/packages/firebase_messaging/firebase_messaging/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingPlugin.java index 4a08eb0237d3..63d1e0dfac0a 100644 --- a/packages/firebase_messaging/firebase_messaging/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingPlugin.java +++ b/packages/firebase_messaging/firebase_messaging/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingPlugin.java @@ -87,6 +87,7 @@ private void initInstance(BinaryMessenger messenger) { @Override public void onAttachedToEngine(FlutterPluginBinding binding) { + ContextHolder.setApplicationContext(binding.getApplicationContext()); initInstance(binding.getBinaryMessenger()); } diff --git a/packages/firebase_messaging/firebase_messaging/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingReceiver.java b/packages/firebase_messaging/firebase_messaging/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingReceiver.java index d9e65b910a44..ebaeca9ffe24 100644 --- a/packages/firebase_messaging/firebase_messaging/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingReceiver.java +++ b/packages/firebase_messaging/firebase_messaging/android/src/main/java/io/flutter/plugins/firebase/messaging/FlutterFirebaseMessagingReceiver.java @@ -20,7 +20,12 @@ public class FlutterFirebaseMessagingReceiver extends BroadcastReceiver { public void onReceive(Context context, Intent intent) { Log.d(TAG, "broadcast received for message"); if (ContextHolder.getApplicationContext() == null) { - ContextHolder.setApplicationContext(context.getApplicationContext()); + Context aContext = context; + if (context.getApplicationContext() != null) { + aContext = context.getApplicationContext(); + } + + ContextHolder.setApplicationContext(aContext); } if (intent.getExtras() == null) {