Use carrier config instead of hardcode the package name in RadioInfo

1. Add protected-broadcast for CARRIER_PROVISIONING intent
2. Use carrier config instead of hardcode the package name in AOSP
3. Update action name from com.android.settings.CARRIER_PROVISIONING to
com.android.phone.settings.CARRIER_PROVISIONING since RadioInfo has been
moved to com.android.phone.settings.

Bug: 181869486
Test: By manual
1. Override carrier config
2. Click the CARRIER_PROVISIONING button

Change-Id: I3701d174a9d570b1ddcc4879bb2cf880c2111867
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 60d5986..ce56d92 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -97,6 +97,9 @@
     <protected-broadcast android:name= "android.telephony.action.MULTI_SIM_CONFIG_CHANGED" />
     <protected-broadcast android:name= "android.telephony.action.CARRIER_SIGNAL_RESET" />
 
+    <protected-broadcast android:name= "com.android.phone.settings.CARRIER_PROVISIONING" />
+    <protected-broadcast android:name= "com.android.phone.settings.TRIGGER_CARRIER_PROVISIONING" />
+
     <!-- For Vendor Debugging in Telephony -->
     <protected-broadcast android:name="android.telephony.action.ANOMALY_REPORTED" />
 
diff --git a/src/com/android/phone/settings/RadioInfo.java b/src/com/android/phone/settings/RadioInfo.java
index dbb902d..88de151 100644
--- a/src/com/android/phone/settings/RadioInfo.java
+++ b/src/com/android/phone/settings/RadioInfo.java
@@ -210,6 +210,11 @@
     private static final int MENU_ITEM_GET_IMS_STATUS      = 4;
     private static final int MENU_ITEM_TOGGLE_DATA         = 5;
 
+    private static final String CARRIER_PROVISIONING_ACTION =
+            "com.android.phone.settings.CARRIER_PROVISIONING";
+    private static final String TRIGGER_CARRIER_PROVISIONING_ACTION =
+            "com.android.phone.settings.TRIGGER_CARRIER_PROVISIONING";
+
     private TextView mDeviceId; //DeviceId is the IMEI in GSM and the MEID in CDMA
     private TextView mLine1Number;
     private TextView mSubscriptionId;
@@ -571,11 +576,20 @@
         mDnsCheckToggleButton = (Button) findViewById(R.id.dns_check_toggle);
         mDnsCheckToggleButton.setOnClickListener(mDnsCheckButtonHandler);
         mCarrierProvisioningButton = (Button) findViewById(R.id.carrier_provisioning);
-        mCarrierProvisioningButton.setOnClickListener(mCarrierProvisioningButtonHandler);
+        if (!TextUtils.isEmpty(getCarrierProvisioningAppString())) {
+            mCarrierProvisioningButton.setOnClickListener(mCarrierProvisioningButtonHandler);
+        } else {
+            mCarrierProvisioningButton.setEnabled(false);
+        }
+
         mTriggerCarrierProvisioningButton = (Button) findViewById(
                 R.id.trigger_carrier_provisioning);
-        mTriggerCarrierProvisioningButton.setOnClickListener(
-                mTriggerCarrierProvisioningButtonHandler);
+        if (!TextUtils.isEmpty(getCarrierProvisioningAppString())) {
+            mTriggerCarrierProvisioningButton.setOnClickListener(
+                    mTriggerCarrierProvisioningButtonHandler);
+        } else {
+            mTriggerCarrierProvisioningButton.setEnabled(false);
+        }
 
         mOemInfoButton = (Button) findViewById(R.id.oem_info);
         mOemInfoButton.setOnClickListener(mOemInfoButtonHandler);
@@ -1610,21 +1624,23 @@
         }
     };
 
-    OnClickListener mCarrierProvisioningButtonHandler = new OnClickListener() {
-        public void onClick(View v) {
-            final Intent intent = new Intent("com.android.settings.CARRIER_PROVISIONING");
-            final ComponentName serviceComponent = ComponentName.unflattenFromString(
-                    "com.android.omadm.service/.DMIntentReceiver");
+    OnClickListener mCarrierProvisioningButtonHandler = v -> {
+        String carrierProvisioningApp = getCarrierProvisioningAppString();
+        if (!TextUtils.isEmpty(carrierProvisioningApp)) {
+            final Intent intent = new Intent(CARRIER_PROVISIONING_ACTION);
+            final ComponentName serviceComponent =
+                    ComponentName.unflattenFromString(carrierProvisioningApp);
             intent.setComponent(serviceComponent);
             sendBroadcast(intent);
         }
     };
 
-    OnClickListener mTriggerCarrierProvisioningButtonHandler = new OnClickListener() {
-        public void onClick(View v) {
-            final Intent intent = new Intent("com.android.settings.TRIGGER_CARRIER_PROVISIONING");
-            final ComponentName serviceComponent = ComponentName.unflattenFromString(
-                    "com.android.omadm.service/.DMIntentReceiver");
+    OnClickListener mTriggerCarrierProvisioningButtonHandler = v -> {
+        String carrierProvisioningApp = getCarrierProvisioningAppString();
+        if (!TextUtils.isEmpty(carrierProvisioningApp)) {
+            final Intent intent = new Intent(TRIGGER_CARRIER_PROVISIONING_ACTION);
+            final ComponentName serviceComponent =
+                    ComponentName.unflattenFromString(carrierProvisioningApp);
             intent.setComponent(serviceComponent);
             sendBroadcast(intent);
         }
@@ -1689,6 +1705,19 @@
         }
     };
 
+    private String getCarrierProvisioningAppString() {
+        if (mPhone != null) {
+            CarrierConfigManager configManager =
+                    mPhone.getContext().getSystemService(CarrierConfigManager.class);
+            PersistableBundle b = configManager.getConfigForSubId(mPhone.getSubId());
+            if (b != null) {
+                return b.getString(
+                        CarrierConfigManager.KEY_CARRIER_PROVISIONING_APP_STRING, "");
+            }
+        }
+        return "";
+    }
+
     boolean isCbrsSupported() {
         return getResources().getBoolean(
               com.android.internal.R.bool.config_cbrs_supported);