Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 55aedb8a authored by Hall Liu's avatar Hall Liu
Browse files

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
parent 61ce1506
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -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 });
    }

    /**