Snap for 10209341 from cdbd29aa0b32c5d79eb342b2f46d2fe47cc2a965 to mainline-healthfitness-release

Change-Id: I8699a6c960ab3a3717096c2998f4a0eea3224373
diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index fb40082..fb2346f 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -56,6 +56,9 @@
             <intent-filter>
                 <action android:name="com.android.ons.action.ESIM_CONFIG"/>
             </intent-filter>
+            <intent-filter>
+                <action android:name="android.telephony.action.CARRIER_CONFIG_CHANGED"/>
+            </intent-filter>
         </receiver>
     </application>
 </manifest>
diff --git a/src/com/android/ons/OpportunisticNetworkService.java b/src/com/android/ons/OpportunisticNetworkService.java
index 223cd37..d41051c 100644
--- a/src/com/android/ons/OpportunisticNetworkService.java
+++ b/src/com/android/ons/OpportunisticNetworkService.java
@@ -71,7 +71,6 @@
     @VisibleForTesting protected ONSProfileSelector mProfileSelector;
     private SharedPreferences mSharedPref;
     @VisibleForTesting protected HashMap<String, ONSConfigInput> mONSConfigInputHashMap;
-    private CarrierConfigManager.CarrierConfigChangeListener mCarrierConfigChangeListener;
 
     private static final String TAG = "ONS";
     private static final String PREF_NAME = TAG;
@@ -314,10 +313,19 @@
         @Override
         public int getPreferredDataSubscriptionId(String callingPackage,
                 String callingFeatureId) {
-            TelephonyPermissions
-                    .checkCallingOrSelfReadPhoneState(mContext,
-                            mSubscriptionManager.getDefaultSubscriptionId(),
-                            callingPackage, callingFeatureId, "getPreferredDataSubscriptionId");
+            if (!TelephonyPermissions.checkReadPhoneStateOnAnyActiveSub(
+                    mContext,
+                    Binder.getCallingPid(),
+                    Binder.getCallingUid(),
+                    callingPackage,
+                    callingFeatureId,
+                    "getPreferredDataSubscriptionId")) {
+                throw new SecurityException(
+                        "getPreferredDataSubscriptionId requires READ_PHONE_STATE,"
+                        + " READ_PRIVILEGED_PHONE_STATE, or carrier privileges on"
+                        + " any active subscription.");
+            }
+
             final long identity = Binder.clearCallingIdentity();
             try {
                 return mProfileSelector.getPreferredDataSubscriptionId();
@@ -423,6 +431,10 @@
                         );
                     }
                     break;
+
+                    case CarrierConfigManager.ACTION_CARRIER_CONFIG_CHANGED:
+                        mONSProfileActivator.handleCarrierConfigChange();
+                        break;
                 }
             }
         }.setIntent(intent));
@@ -435,12 +447,6 @@
         super.onDestroy();
         log("Destroyed Successfully...");
         mHandler.getLooper().quitSafely();
-
-        // Unregister carrier configuration listener
-        CarrierConfigManager ccm = mContext.getSystemService(CarrierConfigManager.class);
-        if (ccm != null && mCarrierConfigChangeListener != null) {
-            ccm.unregisterCarrierConfigChangeListener(mCarrierConfigChangeListener);
-        }
     }
 
     /**
@@ -465,15 +471,6 @@
             new IntentFilter(TelephonyIntents.ACTION_SIM_STATE_CHANGED));
         enableOpportunisticNetwork(getPersistentEnableState());
         mONSProfileActivator = new ONSProfileActivator(mContext, mONSStats);
-        // Register carrier configuration change listener.
-        CarrierConfigManager ccm = mContext.getSystemService(CarrierConfigManager.class);
-        if (ccm != null) {
-            mCarrierConfigChangeListener = (slotIndex, subId, carrierId, specificCarrierId)
-                    -> mONSProfileActivator.handleCarrierConfigChange();
-            ccm.registerCarrierConfigChangeListener(mHandler::post, mCarrierConfigChangeListener);
-        } else {
-            log("Unable to register carrier configuration listener.");
-        }
     }
 
     private void handleCarrierAppAvailableNetworks(