diff options
| -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 455a3e302480..e698b841a2fd 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -3260,6 +3260,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("/")  |