Merge "Remove unnecessary content title from notifications"
diff --git a/src/com/android/stk/StkAppService.java b/src/com/android/stk/StkAppService.java
index 46fc55a..7a9fe18 100644
--- a/src/com/android/stk/StkAppService.java
+++ b/src/com/android/stk/StkAppService.java
@@ -1676,17 +1676,10 @@
 
     private void launchNotificationOnKeyguard(int slotId, String message) {
         Notification.Builder builder = new Notification.Builder(this, STK_NOTIFICATION_CHANNEL_ID);
+        setNotificationTitle(slotId, builder);
 
         builder.setStyle(new Notification.BigTextStyle(builder).bigText(message));
         builder.setContentText(message);
-
-        Menu menu = getMainMenu(slotId);
-        if (menu == null || TextUtils.isEmpty(menu.title)) {
-            builder.setContentTitle("");
-        } else {
-            builder.setContentTitle(menu.title);
-        }
-
         builder.setSmallIcon(R.drawable.stat_notify_sim_toolkit);
         builder.setOngoing(true);
         builder.setOnlyAlertOnce(true);
@@ -2147,12 +2140,7 @@
             createAllChannels();
             final Notification.Builder notificationBuilder = new Notification.Builder(
                     StkAppService.this, STK_NOTIFICATION_CHANNEL_ID);
-            if (mStkContext[slotId].mMainCmd != null &&
-                    mStkContext[slotId].mMainCmd.getMenu() != null) {
-                notificationBuilder.setContentTitle(mStkContext[slotId].mMainCmd.getMenu().title);
-            } else {
-                notificationBuilder.setContentTitle("");
-            }
+            setNotificationTitle(slotId, notificationBuilder);
             notificationBuilder
                     .setSmallIcon(R.drawable.stat_notify_sim_toolkit);
             notificationBuilder.setContentIntent(pendingIntent);
@@ -2181,6 +2169,30 @@
         }
     }
 
+    private void setNotificationTitle(int slotId, Notification.Builder builder) {
+        Menu menu = getMainMenu(slotId);
+        if (menu == null || TextUtils.isEmpty(menu.title)
+                || TextUtils.equals(menu.title, getResources().getString(R.string.app_name))) {
+            // No need to set a content title in the content area if no title (alpha identifier
+            // of SET-UP MENU command) is available for the specified slot or the title is same
+            // as the application label.
+            return;
+        }
+
+        for (int index = 0; index < mSimCount; index++) {
+            if (index != slotId) {
+                Menu otherMenu = getMainMenu(index);
+                if (otherMenu != null && !TextUtils.equals(menu.title, otherMenu.title)) {
+                    // Set the title (alpha identifier of SET-UP MENU command) as the content title
+                    // to differentiate it from other main menu with different alpha identifier
+                    // (including null) is available.
+                    builder.setContentTitle(menu.title);
+                    return;
+                }
+            }
+        }
+    }
+
     /** Creates the notification channel and registers it with NotificationManager.
      * If a channel with the same ID is already registered, NotificationManager will
      * ignore this call.