package com.android.launcher3; import android.annotation.TargetApi; import android.app.Notification; import android.content.Context; import android.graphics.Bitmap; import android.graphics.drawable.BitmapDrawable; import android.graphics.drawable.Drawable; import android.os.Build; import android.os.Parcel; import android.os.Parcelable; import android.service.notification.NotificationListenerService; import android.service.notification.StatusBarNotification; import android.text.TextUtils; import android.util.Log; import android.widget.RemoteViews; import java.lang.reflect.Field; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashSet; import java.util.List; import java.util.Set; import static com.android.launcher3.Utilities.getPrefs; /** * Created by Michele on 02/04/2017. */ @TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR2) public class MyNotificationListenerService extends NotificationListenerService { public static int notificationCount = 0; public static ArrayList<String> names = new ArrayList<String>(); public static ArrayList<Drawable> icons = new ArrayList<Drawable>(); public static String TITLE = null; @TargetApi(20) @Override public void onNotificationPosted(StatusBarNotification sbn, NotificationListenerService.RankingMap rankingMap) { TITLE = sbn.getNotification().extras.getCharSequence(Notification.EXTRA_TITLE).toString(); //Log.e("GROUP KEY", " " + sbn.getPostTime()); //Log.e("FROM", sbn.getNotification().contentIntent.getCreatorPackage()); if(sbn.getTag() == null && TITLE != null){ notificationCount = sbn.getNotification().number; notificationCount++; }else if ((sbn.getTag() != null) && Utilities.isAllowNotificationCountPrefEnabled(getApplicationContext())) { /*if((sbn.getTag() == null || TITLE != null)){ names.add(TITLE); try { icons.add(sbn.getNotification().getLargeIcon().loadDrawable(getApplicationContext())); }catch (Exception e){ Drawable drawable = new BitmapDrawable(getResources(), Launcher.getIcons().get(sbn.getPackageName())); icons.add(drawable); } }else { try { TITLE = sbn.getNotification().extras.getCharSequence(Notification.EXTRA_TITLE).toString(); names.add(TITLE + "\n" + sbn.getNotification().extras.getCharSequence(Notification.EXTRA_TEXT).toString()); icons.add(sbn.getNotification().getLargeIcon().loadDrawable(getApplicationContext())); } catch (Exception e) { } }*/ /*if(sbn.getTag() != null && Utilities.isAllowNotificationCountPrefEnabled(getApplicationContext())) { notificationCount++; }else if(sbn.getTag() == null && Utilities.isAllowNotificationCountPrefEnabled(getApplicationContext()) && TITLE != null){ notificationCount++; } */ notificationCount = sbn.getNotification().number; notificationCount++; for (final AppInfo app : AllAppsList.data) { if (sbn.getPackageName().equals(app.getTargetComponent().getPackageName())) { if(getNotificationCount(getApplicationContext(), app.getTargetComponent().getPackageName()) != -1){ int notificationCountPrev = getNotificationCount(getApplicationContext(), app.getTargetComponent().getPackageName()); notificationCountPrev++; setNotificationCount(getApplicationContext(), app.getTargetComponent().getPackageName(), notificationCountPrev); }else { setNotificationCount(getApplicationContext(), app.getTargetComponent().getPackageName(), notificationCount); } Launcher.getLauncherAppState().reloadWorkspace(); } } } } @Override public void onNotificationPosted(StatusBarNotification sbn){ } @Override public void onNotificationRemoved(StatusBarNotification sbn){ } public static void setNotificationCount(Context context, String packageName, int number){ getPrefs(context).edit().putInt("NOTIFICATION" + packageName, number).apply(); } public static int getNotificationCount(Context context, String packageName){ return getPrefs(context).getInt("NOTIFICATION" + packageName, -1); } }