diff --git a/src/android/com/plugin/gcm/PushPlugin.java b/src/android/com/plugin/gcm/PushPlugin.java index 3e390856..4de02a67 100644 --- a/src/android/com/plugin/gcm/PushPlugin.java +++ b/src/android/com/plugin/gcm/PushPlugin.java @@ -4,6 +4,9 @@ import android.content.Context; import android.os.Bundle; import android.util.Log; +import android.net.ConnectivityManager; +import android.net.NetworkInfo; + import com.google.android.gcm.GCMRegistrar; import org.apache.cordova.CallbackContext; import org.apache.cordova.CordovaInterface; @@ -61,8 +64,11 @@ public boolean execute(String action, JSONArray data, CallbackContext callbackCo gSenderID = (String) jo.get("senderID"); Log.v(TAG, "execute: ECB=" + gECB + " senderID=" + gSenderID); - - GCMRegistrar.register(getApplicationContext(), gSenderID); + + if (isNetworkAvailable()) { + GCMRegistrar.register(getApplicationContext(), gSenderID); + } + result = true; callbackContext.success(); } catch (JSONException e) { @@ -232,7 +238,14 @@ else if (strValue.startsWith("[")) } return null; } - + + private boolean isNetworkAvailable() { + ConnectivityManager connectivityManager + = (ConnectivityManager) cordova.getActivity().getSystemService(Context.CONNECTIVITY_SERVICE); + NetworkInfo activeNetworkInfo = connectivityManager.getActiveNetworkInfo(); + return activeNetworkInfo != null && activeNetworkInfo.isConnected(); + } + public static boolean isInForeground() { return gForeground;