In my Android app,i want to show a push-notification badge count into application icon like ios.
How can I show badge count into application icon ?
In my Android app,i want to show a push-notification badge count into application icon like ios.
How can I show badge count into application icon ?
Android doesn't have this particular feature.
An alternative might be to have a notification that displays the number but the app icon itself is incapable under normal circumstances.
If you REALLY wanted to break design guidelines you could make a widget that looks like your app icon and the widget gets much more control over how it's drawn. Some apps have been released to do this for Gmail, Google Voice, the standard Messaging app, and missed called for the Phone app and they masquerade as regular app icons so it is possible. I don't really recommend this approach, but it is available.
1. use ShortcutBadger library for badges count
dependencies { compile 'me.leolin:ShortcutBadger:1.1.4@aar' } 2.
public class MyFirebaseMessagingService extends FirebaseMessagingService { private static final String TAG = "MyFirebaseMsgService"; Uri defaultSoundUri = RingtoneManager.getDefaultUri(RingtoneManager.TYPE_NOTIFICATION); @Override public void onMessageReceived(RemoteMessage remoteMessage) { // Check if message contains a data payload. if (remoteMessage.getData().size() > 0) { Log.d(TAG, "1. remoteMessage.getData().size() > 0"); Log.d(TAG, "Message data payload: " + remoteMessage.getData()); // {mobile=9458074124, name=Arvind} Log.d(TAG, "Message Notification Body: " + remoteMessage.getNotification().getBody()); Log.d(TAG, "Message getTitle: " + remoteMessage.getNotification().getTitle()); Map notificationData1 = remoteMessage.getData(); SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(getApplicationContext()); Log.d(TAG, sharedPreferences.getString("userid", "") + ".....id"+notificationData1.get("action")); try { if (notificationData1.get("actionID").equalsIgnoreCase(sharedPreferences.getString("userid", ""))) { } else { showNotificationForEvent(remoteMessage); // } } }catch (Exception e) { e.printStackTrace(); } } } // Show Notification for Attend,Like,Comment,Rate private void showNotificationForEvent(RemoteMessage remoteMessage) { Log.d(TAG, "00. showNotificationForEvent"); Map notificationData = remoteMessage.getData(); Intent resultIntent = new Intent(this, BubblesActivity.class); resultIntent.putExtra("action", notificationData.get("action")); resultIntent.putExtra("actionID", notificationData.get("actionID")); resultIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); resultIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); resultIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); PendingIntent pendingIntent = PendingIntent.getActivity(this, 0 /* Request code */, resultIntent, PendingIntent.FLAG_ONE_SHOT); NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this) .setSmallIcon(R.drawable.ipray_appicon) // .setColor(ContextCompat.getColor(this, R.color.textColor)) .setContentTitle(remoteMessage.getNotification().getTitle()) .setContentText(remoteMessage.getNotification().getBody()/*+Utils.getPrefrence(getApplicationContext(), Const.KEY_USER_ID)+"...id"*/) .setAutoCancel(true) .setSound(defaultSoundUri) .setContentIntent(pendingIntent); //Vibration // new long[] { 1000, 1000, 1000, 1000, 1000 } notificationBuilder.setVibrate(new long[] {500,1000}); NotificationManager notificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE); notificationManager.notify(0 /* ID of notification */, notificationBuilder.build()); } //This method will return true if the app is in background. private boolean isAppIsInBackground(Context context) { boolean isInBackground = true; ActivityManager am = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); if (Build.VERSION.SDK_INT > Build.VERSION_CODES.GINGERBREAD) { List 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 taskInfo = am.getRunningTasks(1); ComponentName componentInfo = taskInfo.get(0).topActivity; if (componentInfo.getPackageName().equals(context.getPackageName())) { isInBackground = false; } } return isInBackground; } @Override protected Intent zzae(Intent intent) { //Log.e("intentdata","DataPayload zzae"+intentToString(intent)); return super.zzae(intent); } @Override public boolean zzag(Intent intent) { Log.e("intentdata","DataPayload zzag==="+intentToString(intent).toString()); Log.e("intentdata","getData====="+intent.toString()); if( intent.hasExtra("totalprayerdue")) { ShortcutBadger.applyCount(getApplicationContext(), Integer.parseInt(intent.getStringExtra("totalprayerdue"))); } return super.zzag(intent); } @Override public void zzm(Intent intent) { Log.e("intentdata","DataPayload zzm"+intentToString(intent)); super.zzm(intent); } public static String intentToString(Intent intent) { if (intent == null) return ""; StringBuilder stringBuilder = new StringBuilder("action: ") .append(intent.getAction()) .append(" data: ") .append(intent.getDataString()) .append(" extras: ") ; for (String key : intent.getExtras().keySet()) stringBuilder.append(key).append("=").append(intent.getExtras().get(key)).append(" "); return stringBuilder.toString(); } }