I am implementing GCM service in my android app and i am getting notification also.But we get problem when my app is closed or in background.
When app is in foreground then everything is working fine, I am getting notification with all text and icon but when my app is in background, we get notification text and title but icon is not visible. I searched about this and reached the conclusion that notification is handled by device notification tray when your app is in background.
Here is my code to receive notification:
public class GCMPushReceiverService extends GcmListenerService {
//This method will be called on every new message received
@Override
public void onMessageReceived(String from, Bundle data) {
    //Getting the message from the bundle
    String message = data.getString("message");
    Log.d("data",data.toString());
    //Displaying a notiffication with the message
    String body = null;
    String title = null;
    try{
        String data1 = data.toString();
        String json = (data1.split("notification=Bundle\\[")[1]).split("\\]")[0];
       body = (json.split("body\\=")[1]).split("\\,")[0];
       // title = (((json.split("body\\=")[1]).split("\\,")[1]).split("title\\=")[1]).split("\\,")[0];
        title = (((json.split("body\\=")[1]).split("vibrate")[0]).split("title=")[1]).split(",")[0];
        Log.d("json",json);
        JSONObject notificationJSON = new JSONObject(json);
        //String notificationJSONString = data.getString("notification");
        //then you can parse the notificationJSONString into a JSON object
       // JSONObject notificationJSON = new JSONObject(notificationJSONString );
        // body = notificationJSON.getString("body");
        //title = notificationJSON.getString("title");
        Log.d("body",body);
        Log.d("title",title);
    }catch (Exception e){
        e.printStackTrace();
    }
   // sendNotification(message);
    sendNotification(body, title);
}
//This method is generating a notification and displaying the notification
private void sendNotification(String message,String titles) {
    Intent intent = new Intent(this, NavigationDrawerActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    intent.putExtra("firsttab","notify");
    int requestCode = 0;
    int number = 0;
    PendingIntent pendingIntent = PendingIntent.getActivity(this, requestCode, intent, PendingIntent.FLAG_ONE_SHOT);
    Uri sound = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION);
    NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle();
    NotificationCompat.Builder noBuilder = new NotificationCompat.Builder(this)
           // .setSmallIcon(R.mipmap.philips_launcher)
            .setSmallIcon(getNotificationIcon())
            .setContentTitle(titles)
            .setContentText(message)
            .setAutoCancel(true)
            .setSound(sound)
            .setNumber(++number)
            .setColor(Color.parseColor("#0089C4"))
           // .setStyle(inboxStyle)
            .setStyle(new NotificationCompat.BigTextStyle().bigText(message))
            .setStyle(new NotificationCompat.BigTextStyle().bigText(titles))
            .setContentIntent(pendingIntent);
  /*  if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
        builder.setSmallIcon(R.drawable.icon_transperent);
    } else {
        builder.setSmallIcon(R.drawable.icon);
    }*/
    NotificationManager notificationManager = (NotificationManager)getSystemService(Context.NOTIFICATION_SERVICE);
    notificationManager.notify(0, noBuilder.build()); //0 = ID of notification
}
private int getNotificationIcon() {
    boolean useWhiteIcon = (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.LOLLIPOP);
    return useWhiteIcon ? R.drawable.notification_icon : R.drawable.not_icon;
}
}
My question is how to handled notification when my app is in background? And how to show notification icon when app is in background? When I clicked on notification it open launcherActivity but I want to open some otherActivity.
 
     
     
     
     
    