package com.mvc.kinballwc.utils; import android.app.ActivityManager; import android.app.Notification; import android.app.NotificationManager; import android.app.PendingIntent; import android.content.ComponentName; import android.content.Context; import android.content.Intent; import android.graphics.BitmapFactory; import android.media.RingtoneManager; import android.os.Build; import android.support.v4.app.NotificationCompat; import android.text.TextUtils; import android.widget.Toast; import com.mvc.kinballwc.R; import com.mvc.kinballwc.application.App; import java.util.List; /** * Author: Mario Velasco Casquero * Date: 15/08/2015 * Email: m3ario@gmail.com */ public class NotificationUtils { private String TAG = NotificationUtils.class.getSimpleName(); public static final int NOTIFICATION_ID = 100; private Context mContext; public NotificationUtils() { } public NotificationUtils(Context mContext) { this.mContext = mContext; } public void showNotificationMessage(String title, String message, Intent intent) { // Check for empty push message if (TextUtils.isEmpty(message)) return; if (isAppIsInBackground(mContext)) { // notification icon int icon = R.drawable.ic_push_notification; int mNotificationId = NOTIFICATION_ID; PendingIntent resultPendingIntent = PendingIntent.getActivity( mContext, 0, intent, PendingIntent.FLAG_CANCEL_CURRENT ); NotificationCompat.InboxStyle inboxStyle = new NotificationCompat.InboxStyle(); NotificationCompat.Builder mBuilder = new NotificationCompat.Builder( mContext); Notification notification = mBuilder.setSmallIcon(icon).setTicker(title).setWhen(0) .setAutoCancel(true) .setContentTitle(title) .setStyle(inboxStyle) .setContentIntent(resultPendingIntent) .setSound(RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION)) .setLargeIcon(BitmapFactory.decodeResource(mContext.getResources(), icon)) .setContentText(message) .build(); NotificationManager notificationManager = (NotificationManager) mContext.getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(mNotificationId, notification); } else { intent.putExtra("title", title); intent.putExtra("message", message); intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_SINGLE_TOP); mContext.startActivity(intent); } } /** * Method checks if the app is in background or not * * @param context * @return */ public static boolean isAppIsInBackground(Context context) { boolean isInBackground = true; ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH) { List<ActivityManager.RunningAppProcessInfo> runningProcesses = am.getRunningAppProcesses(); for (ActivityManager.RunningAppProcessInfo processInfo : runningProcesses) { if (processInfo.importance == ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) { for (String activeProcess : processInfo.pkgList) { if (activeProcess.equals(context.getPackageName())) { isInBackground = false; } } } } } else { List<ActivityManager.RunningTaskInfo> taskInfo = am.getRunningTasks(1); ComponentName componentInfo = taskInfo.get(0).topActivity; if (componentInfo.getPackageName().equals(context.getPackageName())) { isInBackground = false; } } return isInBackground; } }