Add Emergency Number Test Mode
Add Emergency number in test mode in TelephonyShellCommand by supporting
add, print, remove, clear operations
Usage:
adb shell cmd phone emergency-number-test-mode -p
Print emergency number list
adb shell cmd phone emergency-number-test-mode -r 1234
Remove a test-mode emergency number 1234
adb shell cmd phone emergency-number-test-mode -c
Clear all the test-mode emergency numbers
adb shell cmd phone emergency-number-test-mode -a 1234
Add 1234 as a test mode emergency number
Test: Manual
Bug: 122840137
Change-Id: Id2a814f2532b489484fa28a3c7e78abbb57240aa
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index 3031d72..e58d60c 100755
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -130,6 +130,7 @@
import com.android.internal.telephony.SmsApplication.SmsApplicationData;
import com.android.internal.telephony.SubscriptionController;
import com.android.internal.telephony.TelephonyPermissions;
+import com.android.internal.telephony.emergency.EmergencyNumberTracker;
import com.android.internal.telephony.euicc.EuiccConnector;
import com.android.internal.telephony.uicc.IccIoResult;
import com.android.internal.telephony.uicc.IccUtils;
@@ -153,9 +154,11 @@
import java.util.Arrays;
import java.util.Collection;
import java.util.HashMap;
+import java.util.HashSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
+import java.util.Set;
/**
* Implementation of the ITelephony interface.
@@ -6061,6 +6064,52 @@
}
}
+ /**
+ * Update emergency number list for test mode.
+ */
+ @Override
+ public void updateEmergencyNumberListTestMode(int action, EmergencyNumber num) {
+ TelephonyPermissions.enforceShellOnly(Binder.getCallingUid(),
+ "updateEmergencyNumberListTestMode");
+
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ for (Phone phone: PhoneFactory.getPhones()) {
+ EmergencyNumberTracker tracker = phone.getEmergencyNumberTracker();
+ if (tracker != null) {
+ tracker.executeEmergencyNumberTestModeCommand(action, num);
+ }
+ }
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
+ /**
+ * Get the full emergency number list for test mode.
+ */
+ @Override
+ public List<String> getEmergencyNumberListTestMode() {
+ TelephonyPermissions.enforceShellOnly(Binder.getCallingUid(),
+ "getEmergencyNumberListTestMode");
+
+ final long identity = Binder.clearCallingIdentity();
+ try {
+ Set<String> emergencyNumbers = new HashSet<>();
+ for (Phone phone: PhoneFactory.getPhones()) {
+ EmergencyNumberTracker tracker = phone.getEmergencyNumberTracker();
+ if (tracker != null) {
+ for (EmergencyNumber num : tracker.getEmergencyNumberList()) {
+ emergencyNumbers.add(num.getNumber());
+ }
+ }
+ }
+ return new ArrayList<>(emergencyNumbers);
+ } finally {
+ Binder.restoreCallingIdentity(identity);
+ }
+ }
+
@Override
public List<String> getCertsFromCarrierPrivilegeAccessRules(int subId) {
enforceReadPrivilegedPermission("getCertsFromCarrierPrivilegeAccessRules");