sendDialerCode API review

address the feeback from API review:
throw exception rather than a boolean return.
handle exception from callers instead of check return boolean
move secret code detection logic from API to API callers.

Bug: 35767402
Test: Manual
Test: run cts -m CtsTelephonyTestCases -t android.telephony.cts.TelephonyManagerTest
Change-Id: Ie31f399799d4cd2413bf65a227fb000bbbe3c8aa
diff --git a/src/com/android/phone/PhoneInterfaceManager.java b/src/com/android/phone/PhoneInterfaceManager.java
index f8eaf49..4f184b5 100644
--- a/src/com/android/phone/PhoneInterfaceManager.java
+++ b/src/com/android/phone/PhoneInterfaceManager.java
@@ -2203,6 +2203,21 @@
     }
 
     /**
+     * Send the dialer code if called from the current default dialer or the caller has
+     * carrier privilege.
+     * @param inputCode The dialer code to send
+     */
+    @Override
+    public void sendDialerSpecialCode(String callingPackage, String inputCode) {
+        mAppOps.checkPackage(Binder.getCallingUid(), callingPackage);
+        String defaultDialer = TelecomManager.from(mPhone.getContext()).getDefaultDialerPackage();
+        if (!TextUtils.equals(callingPackage, defaultDialer)) {
+            enforceCarrierPrivilege(getDefaultSubscription());
+        }
+        mPhone.sendDialerSpecialCode(inputCode);
+    }
+
+    /**
      * Returns the data network type.
      * Legacy call, permission-free.
      *