package ams.android.linkit.Service; import android.app.ActivityManager; import android.app.IntentService; import android.app.NotificationManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.os.SystemClock; import android.support.v4.app.NotificationCompat; import android.util.Log; import com.google.android.gms.gcm.GoogleCloudMessaging; /** * Created by Aidin on 2/1/2015. */ public class GcmIntentService extends IntentService { // public static final int NOTIFICATION_ID = 1; // private NotificationManager mNotificationManager; // NotificationCompat.Builder builder; private static String TAG = "linkitShopper"; public GcmIntentService() { super("GcmIntentService"); } @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 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)) { Log.i(TAG, "Completed work @ " + SystemClock.elapsedRealtime()); // Post notification of received message. if (!isMyServiceRunning(NotiHeadService.class)) { Intent myIntent = new Intent(getApplicationContext(), NotiHeadService.class); myIntent.putExtra("imageUrl", extras.getString("imageUrl")); myIntent.putExtra("linkSrceenShot", extras.getString("linkSrceenShot")); myIntent.putExtra("productLink", extras.getString("productLink")); myIntent.putExtra("text", extras.getString("text"));//; startService(myIntent); } Log.i(TAG, "Received: " + extras.toString()); } } // Release the wake lock provided by the WakefulBroadcastReceiver. GcmBroadcastReceiver.completeWakefulIntent(intent); } private boolean isMyServiceRunning(Class<?> serviceClass) { ActivityManager manager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningServiceInfo service : manager.getRunningServices(Integer.MAX_VALUE)) { if (serviceClass.getName().equals(service.service.getClassName())) { return true; } } return false; } // 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, MainActivity.class), 0); // // NotificationCompat.Builder mBuilder = // new NotificationCompat.Builder(this) // .setSmallIcon(R.drawable.ic_launcher) // .setContentTitle("GCM Notification") // .setStyle(new NotificationCompat.BigTextStyle() // .bigText(msg)) // .setContentText(msg); // // mBuilder.setContentIntent(contentIntent); // mNotificationManager.notify(NOTIFICATION_ID, mBuilder.build()); // } }