Merge "Update permissions for ServiceState broadcast" into sc-dev am: cc16c9178b
Original change: https://googleplex-android-review.googlesource.com/c/platform/frameworks/base/+/16765537 Change-Id: Idb6c2c4d49d923fa981fa37712d2febef15593c6
This commit is contained in:
@@ -2863,14 +2863,32 @@ public class TelephonyRegistry extends ITelephonyRegistry.Stub {
|
|||||||
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId);
|
intent.putExtra(SubscriptionManager.EXTRA_SUBSCRIPTION_INDEX, subId);
|
||||||
intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, phoneId);
|
intent.putExtra(PHONE_CONSTANTS_SLOT_KEY, phoneId);
|
||||||
intent.putExtra(SubscriptionManager.EXTRA_SLOT_INDEX, phoneId);
|
intent.putExtra(SubscriptionManager.EXTRA_SLOT_INDEX, phoneId);
|
||||||
|
|
||||||
// Send the broadcast twice -- once for all apps with READ_PHONE_STATE, then again
|
// 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
|
// for all apps with READ_PRIVILEGED_PHONE_STATE but not READ_PHONE_STATE.
|
||||||
// either READ_PRIV or READ_PHONE get this broadcast exactly once.
|
// Do this again twice, the first time for apps with ACCESS_FINE_LOCATION, then again with
|
||||||
mContext.sendBroadcastAsUser(intent, UserHandle.ALL, Manifest.permission.READ_PHONE_STATE);
|
// the location-sanitized service state for all apps without ACCESS_FINE_LOCATION.
|
||||||
mContext.createContextAsUser(UserHandle.ALL, 0)
|
// This ensures that any app holding either READ_PRIVILEGED_PHONE_STATE or READ_PHONE_STATE
|
||||||
.sendBroadcastMultiplePermissions(intent,
|
// get this broadcast exactly once, and we are not exposing location without permission.
|
||||||
new String[] { Manifest.permission.READ_PRIVILEGED_PHONE_STATE },
|
mContext.createContextAsUser(UserHandle.ALL, 0).sendBroadcastMultiplePermissions(intent,
|
||||||
|
new String[] {Manifest.permission.READ_PHONE_STATE,
|
||||||
|
Manifest.permission.ACCESS_FINE_LOCATION});
|
||||||
|
mContext.createContextAsUser(UserHandle.ALL, 0).sendBroadcastMultiplePermissions(intent,
|
||||||
|
new String[] {Manifest.permission.READ_PRIVILEGED_PHONE_STATE,
|
||||||
|
Manifest.permission.ACCESS_FINE_LOCATION},
|
||||||
new String[] {Manifest.permission.READ_PHONE_STATE});
|
new String[] {Manifest.permission.READ_PHONE_STATE});
|
||||||
|
|
||||||
|
// Replace bundle with location-sanitized ServiceState
|
||||||
|
data = new Bundle();
|
||||||
|
state.createLocationInfoSanitizedCopy(true).fillInNotifierBundle(data);
|
||||||
|
intent.putExtras(data);
|
||||||
|
mContext.createContextAsUser(UserHandle.ALL, 0).sendBroadcastMultiplePermissions(intent,
|
||||||
|
new String[] {Manifest.permission.READ_PHONE_STATE},
|
||||||
|
new String[] {Manifest.permission.ACCESS_FINE_LOCATION});
|
||||||
|
mContext.createContextAsUser(UserHandle.ALL, 0).sendBroadcastMultiplePermissions(intent,
|
||||||
|
new String[] {Manifest.permission.READ_PRIVILEGED_PHONE_STATE},
|
||||||
|
new String[] {Manifest.permission.READ_PHONE_STATE,
|
||||||
|
Manifest.permission.ACCESS_FINE_LOCATION});
|
||||||
}
|
}
|
||||||
|
|
||||||
private void broadcastSignalStrengthChanged(SignalStrength signalStrength, int phoneId,
|
private void broadcastSignalStrengthChanged(SignalStrength signalStrength, int phoneId,
|
||||||
|
|||||||
Reference in New Issue
Block a user