package com.fastaccess.helper;
import android.app.Notification;
import android.app.NotificationManager;
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import android.graphics.Bitmap;
import android.support.annotation.DrawableRes;
import android.support.annotation.NonNull;
import android.support.annotation.Nullable;
import android.support.v4.app.NotificationCompat;
import com.fastaccess.R;
import com.fastaccess.provider.service.FloatingService;
/**
* Created by kosh20111 on 9/8/2015. CopyRights @ Innov8tif
*/
public class NotificationHelper {
public static final int NOTIFICATION_ID = 20111;
public static void notifyShort(@NonNull Context context, @NonNull String title, @NonNull String msg, @DrawableRes int iconId) {
notifyShort(context, title, msg, iconId, NOTIFICATION_ID, null);
}
public static void notifyShort(@NonNull Context context, @NonNull String title, @NonNull String msg, @DrawableRes int iconId,
@NonNull PendingIntent pendingIntent) {
notifyShort(context, title, msg, iconId, NOTIFICATION_ID, pendingIntent);
}
public static void notifyShort(@NonNull Context context, @NonNull String title, @NonNull String msg, @DrawableRes int iconId, int nId) {
notifyShort(context, title, msg, iconId, nId, null);
}
public static void notifyShort(@NonNull Context context, @NonNull String title, @NonNull String msg, @DrawableRes int iconId, int nId,
@Nullable PendingIntent pendingIntent) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(context)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setContentTitle(title)
.setContentText(msg)
.setSmallIcon(iconId)
.setContentIntent(pendingIntent)
.build();
notificationManager.notify(nId, notification);
}
public static void notifyShort(@NonNull Context context, @NonNull String title, String msg, @DrawableRes int iconId,
@NonNull NotificationCompat.Action action) {
notifyShort(context, title, msg, iconId, action, NOTIFICATION_ID);
}
public static void notifyShort(@NonNull Context context, @NonNull String title, String msg, @DrawableRes int iconId,
@NonNull NotificationCompat.Action action, int nId) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(context)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setContentTitle(title)
.setContentText(msg)
.setSmallIcon(iconId)
.addAction(action)
.setContentIntent(action.actionIntent)
.build();
notificationManager.notify(nId, notification);
}
public static void notifyBig(@NonNull Context context, @NonNull String title, @NonNull String msg, @DrawableRes int iconId) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(context)
.setAutoCancel(true)
.setContentTitle(title)
.setDefaults(Notification.DEFAULT_ALL)
.setContentText(msg)
.setSmallIcon(iconId)
.setStyle(new NotificationCompat.BigTextStyle().setBigContentTitle(title).setSummaryText(msg).bigText(msg))
.build();
notificationManager.notify(NOTIFICATION_ID, notification);
}
public static void notifyWithImage(@NonNull Context context, @NonNull String title, @NonNull String msg, @DrawableRes int iconId,
@NonNull Bitmap bitmap) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
Notification notification = new NotificationCompat.Builder(context)
.setAutoCancel(true)
.setDefaults(Notification.DEFAULT_ALL)
.setContentTitle(title)
.setContentText(msg)
.setSmallIcon(iconId)
.setStyle(new NotificationCompat.BigPictureStyle().setBigContentTitle(title).setSummaryText(msg).bigPicture(bitmap))
.build();
notificationManager.notify(NOTIFICATION_ID, notification);
}
public static Notification getNonCancellableNotification(@NonNull Context context, @NonNull String title, @NonNull String msg,
@DrawableRes int iconId, @NonNull PendingIntent pendingIntent,
@NonNull PendingIntent stopServiceIntent) {
return new NotificationCompat.Builder(context)
.setAutoCancel(false)
.setOngoing(true)
.setContentTitle(title)
.setContentText(msg)
.setSmallIcon(iconId)
.addAction(R.drawable.ic_stop, context.getString(R.string.stop_service), stopServiceIntent)
.addAction(R.drawable.ic_fa_notification, context.getString(R.string.click_to_open_fa), pendingIntent)
.setContentIntent(pendingIntent)
.build();
}
public static void collapseFAService(Context context, int size) {
context.stopService(new Intent(context, FloatingService.class));
Intent notificationIntent = new Intent(context, FloatingService.class);
notificationIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
PendingIntent pendingIntent = PendingIntent.getService(context, 0, notificationIntent, PendingIntent.FLAG_CANCEL_CURRENT);
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(context);
int icon = R.drawable.ic_fa_notification;
long finalTime = System.currentTimeMillis();
if (PrefHelper.getBoolean(PrefConstant.STATUS_BAR_HIDDEN)) {
icon = R.drawable.ic_notification;
}
notificationBuilder
.setPriority(Notification.PRIORITY_LOW)
.setWhen(finalTime)
.setSmallIcon(icon)
.setContentTitle(context.getString(R.string.app_name))
.setContentText(context.getString(R.string.click_to_start_service))
.setNumber(size)
.setAutoCancel(false)
.setOngoing(true);
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationBuilder.setContentIntent(pendingIntent);
notificationManager.notify(NOTIFICATION_ID, notificationBuilder.build());
}
public static void cancelNotification(@NonNull Context context, int id) {
int finalId = id == 0 ? NOTIFICATION_ID : id;
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancel(finalId);
}
public static void cancelAllNotifications(@NonNull Context context) {
NotificationManager notificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
notificationManager.cancelAll();
}
}