@@ -43,6 +43,7 @@ public class CoreAndroid extends CordovaPlugin {
4343 private BroadcastReceiver telephonyReceiver ;
4444 private CallbackContext messageChannel ;
4545 private PluginResult pendingResume ;
46+ private PluginResult pendingPause ;
4647 private final Object messageChannelLock = new Object ();
4748
4849 /**
@@ -113,6 +114,10 @@ else if (action.equals("exitApp")) {
113114 else if (action .equals ("messageChannel" )) {
114115 synchronized (messageChannelLock ) {
115116 messageChannel = callbackContext ;
117+ if (pendingPause != null ) {
118+ sendEventMessage (pendingPause );
119+ pendingPause = null ;
120+ }
116121 if (pendingResume != null ) {
117122 sendEventMessage (pendingResume );
118123 pendingResume = null ;
@@ -321,7 +326,19 @@ private void sendEventMessage(String action) {
321326 } catch (JSONException e ) {
322327 LOG .e (TAG , "Failed to create event message" , e );
323328 }
324- sendEventMessage (new PluginResult (PluginResult .Status .OK , obj ));
329+ PluginResult result = new PluginResult (PluginResult .Status .OK , obj );
330+
331+ if (messageChannel == null ) {
332+ LOG .i (TAG , "Request to send event before messageChannel initialised: " + action );
333+ if ("pause" .equals (action )) {
334+ pendingPause = result ;
335+ } else if ("resume" .equals (action )) {
336+ // When starting normally onPause then onResume is called
337+ pendingPause = null ;
338+ }
339+ } else {
340+ sendEventMessage (result );
341+ }
325342 }
326343
327344 private void sendEventMessage (PluginResult payload ) {
0 commit comments