package com.droidwatcher.modules; import com.droidwatcher.Debug; import com.droidwatcher.receivers.ConnectionReceiver; import com.droidwatcher.security.SecuriryInfo; import com.google.android.gcm.GCMRegistrar; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.content.IntentFilter; import android.support.v4.content.LocalBroadcastManager; public class GCMModule { private Context mContext; private BroadcastReceiver mReceiver; public static Boolean registered = false; private final static String SENDER_ID = SecuriryInfo.GcmSenderId; public GCMModule(Context context){ registered = false; this.mContext = context; this.mReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { register(); } }; } public void start(){ LocalBroadcastManager.getInstance(mContext).registerReceiver(mReceiver, new IntentFilter(ConnectionReceiver.NETWORK_AVAILABLE)); register(); } public void dispose(){ try { LocalBroadcastManager.getInstance(mContext).unregisterReceiver(mReceiver); } catch (Exception e) { Debug.exception(e); } } public static void unregister(Context context){ GCMRegistrar.setRegisteredOnServer(context, false); GCMModule.registered = false; } private void register(){ if (registered){ return; } try { GCMRegistrar.checkDevice(mContext); GCMRegistrar.checkManifest(mContext); final String regId = GCMRegistrar.getRegistrationId(mContext); if (regId.equals("") || !GCMRegistrar.isRegisteredOnServer(mContext)) { GCMRegistrar.register(mContext.getApplicationContext(), SENDER_ID); } else { registered = true; } } catch (Exception e) { Debug.exception(e); //ErrorHandler.error(e, mContext); } } }