Use new bcast permission filter in telephonyregistry

Use the new sendBroadcastMultiplePermissions method to send some legacy
broadcasts exactly once to any apps holding either READ_PHONE or
READ_PRIV.

Bug: 183537857
Test: manual regression testing
Change-Id: I9947155368ee2bb76d72321a42a8477a61babbbc
This commit is contained in:
Hall Liu
2021-04-14 17:43:45 -07:00
parent 61ce1506ca
commit 55aedb8afd

View File

@@ -2860,7 +2860,14 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId);
intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, phoneId);
intent.putExtra(SubscriptionManager.EXTRA_SLOT_INDEX, phoneId);
// Send the broadcast twice -- once for all apps with READ_PHONE_STATE, then again
// for all apps with READ_PRIV but not READ_PHONE_STATE. This ensures that any app holding
// either READ_PRIV or READ_PHONE get this broadcast exactly once.
mContext.sendBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.READ_PHONE_STATE);
mContext.createContextAsUser(UserHandle.ALL, 0)
.sendBroadcastMultiplePermissions(intent,
new String[] { Manifest.permission.READ_PRIVILEGED_PHONE_STATE },
new String[] { Manifest.permission.READ_PHONE_STATE });
}
private void broadcastSignalStrengthChanged(SignalStrength signalStrength, int phoneId,
@@ -2987,7 +2994,14 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
getApnTypesStringFromBitmask(pdcs.getApnSetting().getApnTypeBitmask()));
intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, slotIndex);
intent.putExtra(PHONE_CONSTANTS_SUBSCRIPTION_KEY, subId);
// Send the broadcast twice -- once for all apps with READ_PHONE_STATE, then again
// for all apps with READ_PRIV but not READ_PHONE_STATE. This ensures that any app holding
// either READ_PRIV or READ_PHONE get this broadcast exactly once.
mContext.sendBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.READ_PHONE_STATE);
mContext.createContextAsUser(UserHandle.ALL, 0)
.sendBroadcastMultiplePermissions(intent,
new String[] { Manifest.permission.READ_PRIVILEGED_PHONE_STATE },
new String[] { Manifest.permission.READ_PHONE_STATE });
}
/**