diff options
| -rw-r--r-- | services/core/java/com/android/server/TelephonyRegistry.java | 24 | ||||
| -rw-r--r-- | telephony/java/android/telephony/PhoneStateListener.java | 5 |
2 files changed, 4 insertions, 25 deletions
diff --git a/services/core/java/com/android/server/TelephonyRegistry.java b/services/core/java/com/android/server/TelephonyRegistry.java index cfd2503506d1..77e52fa6ab46 100644 --- a/services/core/java/com/android/server/TelephonyRegistry.java +++ b/services/core/java/com/android/server/TelephonyRegistry.java @@ -79,7 +79,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.NoSuchElementException; -import java.util.stream.Collectors; /** * Since phone process can be restarted, this class provides a centralized place @@ -863,10 +862,7 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { } } if ((events & PhoneStateListener - .LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE) != 0 - && TelephonyPermissions.checkReadPhoneStateOnAnyActiveSub( - r.context, r.callerPid, r.callerUid, r.callingPackage, - "listen_active_data_subid_change")) { + .LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE) != 0) { try { r.callback.onActiveDataSubIdChanged(mActiveDataSubId); } catch (RemoteException ex) { @@ -1845,23 +1841,11 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub { log("notifyActiveDataSubIdChanged: activeDataSubId=" + activeDataSubId); } - // Create a copy to prevent the IPC call while checking carrier privilege under the lock. - List<Record> copiedRecords; - synchronized (mRecords) { - copiedRecords = new ArrayList<>(mRecords); - } mActiveDataSubId = activeDataSubId; - - // Filter the record that does not listen to this change or does not have the permission. - copiedRecords = copiedRecords.stream().filter(r -> r.matchPhoneStateListenerEvent( - PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE) - && TelephonyPermissions.checkReadPhoneStateOnAnyActiveSub( - mContext, r.callerPid, r.callerUid, r.callingPackage, - "notifyActiveDataSubIdChanged")).collect(Collectors.toCollection(ArrayList::new)); - synchronized (mRecords) { - for (Record r : copiedRecords) { - if (mRecords.contains(r)) { + for (Record r : mRecords) { + if (r.matchPhoneStateListenerEvent( + PhoneStateListener.LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE)) { try { r.callback.onActiveDataSubIdChanged(activeDataSubId); } catch (RemoteException ex) { diff --git a/telephony/java/android/telephony/PhoneStateListener.java b/telephony/java/android/telephony/PhoneStateListener.java index 2c4d59d18916..1e1e3daff3ec 100644 --- a/telephony/java/android/telephony/PhoneStateListener.java +++ b/telephony/java/android/telephony/PhoneStateListener.java @@ -302,11 +302,6 @@ public class PhoneStateListener { * it could be the current active opportunistic subscription in use, or the * subscription user selected as default data subscription in DSDS mode. * - * Requires Permission: No permission is required to listen, but notification requires - * {@link android.Manifest.permission#READ_PHONE_STATE READ_PHONE_STATE} or the calling - * app has carrier privileges (see {@link TelephonyManager#hasCarrierPrivileges}) - * on any active subscription. - * * @see #onActiveDataSubscriptionIdChanged */ public static final int LISTEN_ACTIVE_DATA_SUBSCRIPTION_ID_CHANGE = 0x00400000; |