Java tutorial
/******************************************************************************* * Copyright 2013 de Geraldo Augusto de Morais Figueiredo * Este arquivo parte do programa Monitora, Brasil!. O Monitora, Brasil! um software livre. * Voc pode redistribu-lo e/ou modific-lo dentro dos termos da GNU Affero General Public License * como publicada pela Fundao do Software Livre (FSF); na verso 3 da Licena. * Este programa distribudo na esperana que possa ser til, mas SEM NENHUMA GARANTIA, * sem uma garantia implcita de ADEQUAO a qualquer MERCADO ou APLICAO EM PARTICULAR. * Veja a licena para maiores detalhes. * Voc deve ter recebido uma cpia da GNU Affero General Public License, sob o ttulo "LICENSE.txt", * junto com este programa, se no, acesse http://www.gnu.org/licenses/ ******************************************************************************/ package br.com.epitrack.healthycup.gcm; import android.app.IntentService; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.v4.app.NotificationCompat; import android.util.Log; import br.com.epitrack.healthycup.R; import br.com.epitrack.healthycup.Splash; import com.google.android.gms.gcm.GoogleCloudMessaging; public class GCMIntentService extends IntentService { public static final int NOTIFICATION_ID = 1; private NotificationManager mNotificationManager; NotificationCompat.Builder builder; private static final String TAG = "SaudeNaCopae"; //colocar aqui o sender_id para utilizar o GCM static String SENDER_ID = "559878614256"; public GCMIntentService() { super(SENDER_ID); // Log.i( TAG, "GCMIntentService constructor called" ); } @Override protected void onHandleIntent(Intent intent) { Bundle extras = intent.getExtras(); GoogleCloudMessaging gcm = GoogleCloudMessaging.getInstance(this); // The getMessageType() intent parameter must be the intent you received // in your BroadcastReceiver. String messageType = gcm.getMessageType(intent); if (!extras.isEmpty()) { // has effect of unparcelling Bundle /* * Filter messages based on message type. Since it is likely that GCM * will be extended in the future with new message types, just ignore * any message types you're not interested in, or that you don't * recognize. */ if (GoogleCloudMessaging.MESSAGE_TYPE_SEND_ERROR.equals(messageType)) { sendNotification("Send error: " + extras.toString()); } else if (GoogleCloudMessaging.MESSAGE_TYPE_DELETED.equals(messageType)) { sendNotification("Deleted messages on server: " + extras.toString()); // If it's a regular GCM message, do some work. } else if (GoogleCloudMessaging.MESSAGE_TYPE_MESSAGE.equals(messageType)) { // Post notification of received message. sendNotification(extras.getString("message")); Log.i(TAG, "Received: " + extras.toString()); } } // Release the wake lock provided by the WakefulBroadcastReceiver. GCMBroadcastReceiver.completeWakefulIntent(intent); } // Put the message into a notification and post it. // This is just one simple example of what you might choose to do with // a GCM message. private void sendNotification(String msg) { mNotificationManager = (NotificationManager) this.getSystemService(Context.NOTIFICATION_SERVICE); PendingIntent contentIntent = PendingIntent.getActivity(this, 0, new Intent(this, Splash.class), 0); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ic_launcher).setContentTitle(getString(R.string.app_name)) .setStyle(new NotificationCompat.BigTextStyle().bigText(msg)).setOngoing(true).setContentText(msg); mBuilder.setAutoCancel(true); mBuilder.setContentIntent(contentIntent); mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build()); } }