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(