/** * galaxy inc. * meetup client for android */ package com.galaxy.meetup.client.android.c2dm; import android.app.PendingIntent; import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.text.TextUtils; import android.util.Log; import com.galaxy.meetup.client.android.analytics.EsAnalytics; import com.galaxy.meetup.client.android.analytics.OzActions; import com.galaxy.meetup.client.android.analytics.OzViews; import com.galaxy.meetup.client.android.content.EsAccount; import com.galaxy.meetup.client.android.hangout.HangoutRingingActivity; import com.galaxy.meetup.client.android.realtimechat.RealTimeChatService; import com.galaxy.meetup.client.android.service.EsService; import com.galaxy.meetup.client.util.EsLog; /** * * @author sihai * */ public class C2DMReceiver extends BroadcastReceiver { public C2DMReceiver() { } public static void requestC2DMRegistrationId(Context context) { if(EsLog.isLoggable("C2DMReceiver", 4)) Log.i("C2DMReceiver", "requestC2DMReg"); Intent intent = new Intent("com.google.android.c2dm.intent.REGISTER"); intent.putExtra("app", PendingIntent.getBroadcast(context, 0, new Intent(), 0)); intent.putExtra("sender", "bunch.eng.c2dm@gmail.com"); context.startService(intent); } public static void unregisterC2DM(Context context) { if(EsLog.isLoggable("C2DMReceiver", 4)) Log.i("C2DMReceiver", "unregisterC2DMReg"); Intent intent = new Intent("com.google.android.c2dm.intent.UNREGISTER"); intent.putExtra("app", PendingIntent.getBroadcast(context, 0, new Intent(), 0)); intent.putExtra("sender", "bunch.eng.c2dm@gmail.com"); context.startService(intent); } public void onReceive(Context context, Intent intent) { String s = intent.getStringExtra("focus_account_id"); EsAccount esaccount = EsService.getActiveAccount(context); if(EsLog.isLoggable("C2DMReceiver", 4)) Log.i("C2DMReceiver", (new StringBuilder("onReceive ")).append(intent).append(" ").append(intent.getAction()).toString()); if(!intent.getAction().equals("com.google.android.c2dm.intent.REGISTRATION")) { if(intent.getAction().equals("com.google.android.c2dm.intent.RECEIVE")) { if(esaccount != null && esaccount.hasGaiaId()) { String s1; if(s.startsWith("g:")) s1 = s.substring(2); else s1 = s; if(!esaccount.isMyGaiaId(s1)) if(EsLog.isLoggable("C2DMReceiver", 4)) Log.i("C2DMReceiver", "c2dm message for wrong account"); } } else { String s2 = intent.getStringExtra("type"); if(s2 == null) { String s3 = intent.getStringExtra("message_timestamp"); String s4 = intent.getStringExtra("conversation_id"); if(!TextUtils.isEmpty(s3)) try { long l = Long.valueOf(s3).longValue(); EsAnalytics.recordActionEvent(context, esaccount, OzActions.C2DM_MESSAGE_RECEIVED, OzViews.NOTIFICATIONS_WIDGET, l); } catch(NumberFormatException numberformatexception) { Log.e("C2DMReceiver", (new StringBuilder("C2DM timestamp value is invalid ")).append(s3).toString()); } if(EsLog.isLoggable("C2DMReceiver", 4)) Log.i("C2DMReceiver", (new StringBuilder("handleMessage ")).append(s4).append(" ").append(s3).toString()); RealTimeChatService.connectIfLoggedIn(context, s, s4, s3); } else if(s2.equals("hangout")) HangoutRingingActivity.onC2DMReceive(context, esaccount, intent); } } else { String s5 = intent.getStringExtra("registration_id"); if(intent.getStringExtra("error") != null) { if(EsLog.isLoggable("C2DMReceiver", 4)) Log.i("C2DMReceiver", "c2dm error"); RealTimeChatService.handleC2DMRegistrationError(context, intent.getStringExtra("error")); } else if(intent.getStringExtra("unregistered") != null) { if(EsLog.isLoggable("C2DMReceiver", 4)) Log.i("C2DMReceiver", "c2dm unregistration"); RealTimeChatService.handleC2DMUnregistration(context); } else if(s5 != null) { if(EsLog.isLoggable("C2DMReceiver", 4)) Log.i("C2DMReceiver", "c2dm registration"); RealTimeChatService.handleC2DMRegistration(context, s5); } } setResultCode(-1); } }