create a new notification channel for high prio sim alert
create a high priority notification channel for sim releated alert
in some scenario, we want users to know that they cannot completely
rely on their ability to make a phone call and data call with the
SIM and this may apply to emergency situations.
Bug: 134790138
Test: Manual test
Change-Id: Ia3c6d568d424bf501d77336e3dcb940f4c8179a4
diff --git a/src/com/android/phone/PhoneGlobals.java b/src/com/android/phone/PhoneGlobals.java
index 0f8f146..8d3027a 100644
--- a/src/com/android/phone/PhoneGlobals.java
+++ b/src/com/android/phone/PhoneGlobals.java
@@ -46,6 +46,7 @@
import android.telephony.AnomalyReporter;
import android.telephony.CarrierConfigManager;
import android.telephony.ServiceState;
+import android.telephony.SubscriptionInfo;
import android.telephony.SubscriptionManager;
import android.telephony.TelephonyManager;
import android.telephony.data.ApnSetting;
@@ -73,6 +74,7 @@
import java.io.FileDescriptor;
import java.io.PrintWriter;
+import java.util.List;
/**
* Global state for the telephony subsystem when running in the primary
@@ -649,6 +651,7 @@
// Roaming status could be overridden by carrier config, so we need to update it.
if (VDBG) Log.v(LOG_TAG, "carrier config changed.");
updateDataRoamingStatus();
+ updateLimitedSimFunctionForDualSim();
} else if (action.equals(TelephonyIntents.ACTION_DEFAULT_DATA_SUBSCRIPTION_CHANGED)) {
// We also need to pay attention when default data subscription changes.
if (VDBG) Log.v(LOG_TAG, "default data sub changed.");
@@ -755,6 +758,38 @@
}
}
+ private void updateLimitedSimFunctionForDualSim() {
+ if (DBG) Log.d(LOG_TAG, "updateLimitedSimFunctionForDualSim");
+ // check conditions to display limited SIM function notification under dual SIM
+ SubscriptionManager subMgr = (SubscriptionManager) getSystemService(
+ Context.TELEPHONY_SUBSCRIPTION_SERVICE);
+ List<SubscriptionInfo> subList = subMgr.getActiveSubscriptionInfoList(false);
+ if (subList != null && subList.size() > 1) {
+ CarrierConfigManager configMgr = (CarrierConfigManager)
+ getSystemService(Context.CARRIER_CONFIG_SERVICE);
+ for (SubscriptionInfo info : subList) {
+ PersistableBundle b = configMgr.getConfigForSubId(info.getSubscriptionId());
+ if (b != null) {
+ if (b.getBoolean(CarrierConfigManager
+ .KEY_LIMITED_SIM_FUNCTION_NOTIFICATION_FOR_DSDS_BOOL)) {
+ notificationMgr.showLimitedSimFunctionWarningNotification(
+ info.getSubscriptionId(),
+ info.getDisplayName().toString());
+ } else {
+ notificationMgr.dismissLimitedSimFunctionWarningNotification(
+ info.getSubscriptionId());
+ }
+ }
+ }
+ } else {
+ // cancel notifications for all subs
+ notificationMgr.dismissLimitedSimFunctionWarningNotification(
+ SubscriptionManager.INVALID_SUBSCRIPTION_ID);
+ }
+ notificationMgr.dismissLimitedSimFunctionWarningNotificationForInactiveSubs();
+
+ }
+
public Phone getPhoneInEcm() {
return phoneInEcm;
}