CFI for individual subscriptions
Based on the subscription select the corresponding CFI from the resource
and display it on the UI.
Test: manual - Display the call forwarding indication at each SIM when
several SIM cards that enabled call forwarding or voicemail message
received are inserted.
Bug: 34871334
Change-Id: Ia9741c70e701cd5953881888751cd5ddf3203563
diff --git a/src/com/android/phone/NotificationMgr.java b/src/com/android/phone/NotificationMgr.java
index eefa2c5..1764d4c 100644
--- a/src/com/android/phone/NotificationMgr.java
+++ b/src/com/android/phone/NotificationMgr.java
@@ -133,27 +133,6 @@
mSubscriptionManager = SubscriptionManager.from(mContext);
mTelecomManager = TelecomManager.from(mContext);
mTelephonyManager = (TelephonyManager) app.getSystemService(Context.TELEPHONY_SERVICE);
-
- mSubscriptionManager.addOnSubscriptionsChangedListener(
- new OnSubscriptionsChangedListener() {
- @Override
- public void onSubscriptionsChanged() {
- updateActivePhonesMwi();
- }
- });
- }
-
- public void updateActivePhonesMwi() {
- List<SubscriptionInfo> subInfos = mSubscriptionManager.getActiveSubscriptionInfoList();
-
- if (subInfos == null) {
- return;
- }
-
- for (int i = 0; i < subInfos.size(); i++) {
- int subId = subInfos.get(i).getSubscriptionId();
- refreshMwi(subId);
- }
}
/**
@@ -205,7 +184,7 @@
if (mMwiVisible.containsKey(subId)) {
boolean mwiVisible = mMwiVisible.get(subId);
if (mwiVisible) {
- updateMwi(subId, mwiVisible, true /* isRefresh */);
+ mApp.notifier.updatePhoneStateListeners(true);
}
}
}
@@ -273,6 +252,10 @@
}
int resId = android.R.drawable.stat_notify_voicemail;
+ if (mTelephonyManager.getPhoneCount() > 1) {
+ resId = (phone.getPhoneId() == 0) ? R.drawable.stat_notify_voicemail_sub1
+ : R.drawable.stat_notify_voicemail_sub2;
+ }
// This Notification can get a lot fancier once we have more
// information about the current voicemail messages.
@@ -493,14 +476,18 @@
}
String notificationTitle;
+ int resId = R.drawable.stat_sys_phone_call_forward;
if (mTelephonyManager.getPhoneCount() > 1) {
+ int slotId = SubscriptionManager.getSlotIndex(subId);
+ resId = (slotId == 0) ? R.drawable.stat_sys_phone_call_forward_sub1
+ : R.drawable.stat_sys_phone_call_forward_sub2;
notificationTitle = subInfo.getDisplayName().toString();
} else {
notificationTitle = mContext.getString(R.string.labelCF);
}
Notification.Builder builder = new Notification.Builder(mContext)
- .setSmallIcon(R.drawable.stat_sys_phone_call_forward)
+ .setSmallIcon(resId)
.setColor(subInfo.getIconTint())
.setContentTitle(notificationTitle)
.setContentText(mContext.getString(R.string.sum_cfu_enabled_indicator))
@@ -531,10 +518,17 @@
userHandle);
}
} else {
- mNotificationManager.cancelAsUser(
- Integer.toString(subId) /* tag */,
- CALL_FORWARD_NOTIFICATION,
- UserHandle.ALL);
+ List<UserInfo> users = mUserManager.getUsers(true);
+ for (UserInfo user : users) {
+ if (user.isManagedProfile()) {
+ continue;
+ }
+ UserHandle userHandle = user.getUserHandle();
+ mNotificationManager.cancelAsUser(
+ Integer.toString(subId) /* tag */,
+ CALL_FORWARD_NOTIFICATION,
+ userHandle);
+ }
}
}