From 8f6fcdf5b94b05368032a98e00378752c7c40035 Mon Sep 17 00:00:00 2001 From: Jean-Michel Trivi Date: Tue, 9 Apr 2019 13:38:18 -0700 Subject: AudioService: fix broadcast of ACTION_SPEAKERPHONE_STATE_CHANGED When broadcasting ACTION_SPEAKERPHONE_STATE_CHANGED: - clear calling identity - send to all users Bug: 129871987 Test: see bug Change-Id: I7dbe68a179d3012f1c38d866e8528eed25e109e6 --- services/core/java/com/android/server/audio/AudioService.java | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index 32781a90348b..e516936b5d3f 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -3361,8 +3361,14 @@ public class AudioService extends IAudioService.Stub .append(Binder.getCallingPid()).toString(); final boolean stateChanged = mDeviceBroker.setSpeakerphoneOn(on, eventSource); if (stateChanged) { - mContext.sendBroadcast(new Intent(AudioManager.ACTION_SPEAKERPHONE_STATE_CHANGED) - .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY)); + final long ident = Binder.clearCallingIdentity(); + try { + mContext.sendBroadcastAsUser( + new Intent(AudioManager.ACTION_SPEAKERPHONE_STATE_CHANGED) + .setFlags(Intent.FLAG_RECEIVER_REGISTERED_ONLY), UserHandle.ALL); + } finally { + Binder.restoreCallingIdentity(ident); + } } } -- cgit v1.2.3-59-g8ed1b