@Override public void onReceive(Context context, Intent intent) { ctx = context; PowerManager mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE); WakeLock mWakeLock = mPowerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, TAG); mWakeLock.acquire(); try { GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(context); String messageType = gcm.getMessageType(intent); if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) { sendNotification("Send error"); } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) { sendNotification("Deleted messages on server"); } else { String msg = intent.getStringExtra(DataProvider.COL_MESSAGE); String senderEmail = intent.getStringExtra(DataProvider.COL_SENDER_EMAIL); String receiverEmail = intent.getStringExtra(DataProvider.COL_RECEIVER_EMAIL); if (!contactExists(senderEmail, context)) { ContentValues values = new ContentValues(2); values.put(DataProvider.COL_NAME, senderEmail.substring(0, senderEmail.indexOf('@'))); values.put(DataProvider.COL_EMAIL, senderEmail); context.getContentResolver().insert(DataProvider.CONTENT_URI_PROFILE, values); } ContentValues values = new ContentValues(2); values.put(DataProvider.COL_TYPE, MessageType.INCOMING.ordinal()); values.put(DataProvider.COL_MESSAGE, msg); values.put(DataProvider.COL_SENDER_EMAIL, senderEmail); values.put(DataProvider.COL_RECEIVER_EMAIL, receiverEmail); context.getContentResolver().insert(DataProvider.CONTENT_URI_MESSAGES, values); if (Common.isNotify()) { newMessageNotification("New message", senderEmail); } } setResultCode(Activity.RESULT_OK); } finally { mWakeLock.release(); } }