diff --git a/media/java/android/media/AudioService.java b/media/java/android/media/AudioService.java index 329033cf8b4fa..1d16793ec03aa 100644 --- a/media/java/android/media/AudioService.java +++ b/media/java/android/media/AudioService.java @@ -1777,6 +1777,15 @@ public class AudioService extends IAudioService.Stub { return; } + if ( (mode == AudioSystem.MODE_IN_CALL) && + (mContext.checkCallingOrSelfPermission( + android.Manifest.permission.MODIFY_PHONE_STATE) + != PackageManager.PERMISSION_GRANTED)) { + Log.w(TAG, "MODIFY_PHONE_STATE Permission Denial: setMode(MODE_IN_CALL) from pid=" + + Binder.getCallingPid() + ", uid=" + Binder.getCallingUid()); + return; + } + if (mode < AudioSystem.MODE_CURRENT || mode >= AudioSystem.NUM_MODES) { return; } @@ -1798,7 +1807,7 @@ public class AudioService extends IAudioService.Stub { // must be called synchronized on mSetModeDeathHandlers // setModeInt() returns a valid PID if the audio mode was successfully set to // any mode other than NORMAL. - int setModeInt(int mode, IBinder cb, int pid) { + private int setModeInt(int mode, IBinder cb, int pid) { if (DEBUG_MODE) { Log.v(TAG, "setModeInt(mode=" + mode + ", pid=" + pid + ")"); } int newModeOwnerPid = 0; if (cb == null) { @@ -3058,7 +3067,7 @@ public class AudioService extends IAudioService.Stub { } boolean checkAudioSettingsPermission(String method) { - if (mContext.checkCallingOrSelfPermission("android.permission.MODIFY_AUDIO_SETTINGS") + if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.MODIFY_AUDIO_SETTINGS) == PackageManager.PERMISSION_GRANTED) { return true; }