diff options
| author | 2019-02-14 22:16:34 -0800 | |
|---|---|---|
| committer | 2019-02-14 22:16:34 -0800 | |
| commit | 443bb50def59b4b700b3d27b95a28974b18c4e6f (patch) | |
| tree | f384fcaf5017dddaa82875a494101419fc391ab1 | |
| parent | edf9cd7bc343a47eb64cea70ce9cc074fdba7cab (diff) | |
| parent | 09c1453b05fb950f868b4c0d0ce7ecf510df0854 (diff) | |
Merge "Prevent 3rd party app from turning on speaker during the system call Test: manual" am: cec740470c am: e6fc1209f1
am: 09c1453b05
Change-Id: Id9ecd08af0cce81cf1be361d041c3ae375476e81
| -rw-r--r-- | services/core/java/com/android/server/audio/AudioService.java | 15 |
1 files changed, 15 insertions, 0 deletions
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index a6643d49c79f..fbabc82ed65d 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -3217,6 +3217,21 @@ public class AudioService extends IAudioService.Stub if (!checkAudioSettingsPermission("setSpeakerphoneOn()")) { return; } + + if (mContext.checkCallingOrSelfPermission( + android.Manifest.permission.MODIFY_PHONE_STATE) + != PackageManager.PERMISSION_GRANTED) { + synchronized (mSetModeDeathHandlers) { + for (SetModeDeathHandler h : mSetModeDeathHandlers) { + if (h.getMode() == AudioSystem.MODE_IN_CALL) { + Log.w(TAG, "getMode is call, Permission Denial: setSpeakerphoneOn from pid=" + + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid()); + return; + } + } + } + } + // for logging only final String eventSource = new StringBuilder("setSpeakerphoneOn(").append(on) .append(") from u/pid:").append(Binder.getCallingUid()).append("/") |