summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author François Gaffie <francois.gaffie@ampere.cars> 2024-07-11 11:11:51 +0200
committer Oscar Azucena <oscarazu@google.com> 2025-03-17 11:06:01 -0700
commit76e3bf9a04746763e689e1b9237dffade6f246b9 (patch)
treeb1eac33c367b56a661b861f9d941671739d80ff6
parent1c11482afa783b3f65391dcb99c56d17f9d976cb (diff)
Add MODIFY_AUDIO_SETTINGS_PRIVILEGED permission check to volume callback
Bug: 293236285 Flag: EXEMPT refactor Test: atest AudioManagerTest Change-Id: Ie59ddeb96913907d6b7ba494cf36b7d7274a4be0 Signed-off-by: François Gaffie <francois.gaffie@ampere.cars>
-rw-r--r--media/java/android/media/IAudioService.aidl2
-rw-r--r--media/tests/AudioPolicyTest/AndroidManifest.xml1
-rw-r--r--services/core/java/com/android/server/audio/AudioService.java6
3 files changed, 9 insertions, 0 deletions
diff --git a/media/java/android/media/IAudioService.aidl b/media/java/android/media/IAudioService.aidl
index b97b943113b6..c505bcee0332 100644
--- a/media/java/android/media/IAudioService.aidl
+++ b/media/java/android/media/IAudioService.aidl
@@ -447,8 +447,10 @@ interface IAudioService {
boolean isAudioServerRunning();
+ @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED")
void registerAudioVolumeCallback(IAudioVolumeChangeDispatcher avc);
+ @EnforcePermission("MODIFY_AUDIO_SETTINGS_PRIVILEGED")
oneway void unregisterAudioVolumeCallback(IAudioVolumeChangeDispatcher avc);
int setUidDeviceAffinity(in IAudioPolicyCallback pcb, in int uid, in int[] deviceTypes,
diff --git a/media/tests/AudioPolicyTest/AndroidManifest.xml b/media/tests/AudioPolicyTest/AndroidManifest.xml
index 5c911b135a5d..466da7e66fbf 100644
--- a/media/tests/AudioPolicyTest/AndroidManifest.xml
+++ b/media/tests/AudioPolicyTest/AndroidManifest.xml
@@ -19,6 +19,7 @@
<uses-permission android:name="android.permission.RECORD_AUDIO" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS" />
+ <uses-permission android:name="android.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED" />
<uses-permission android:name="android.permission.MODIFY_AUDIO_ROUTING" />
<uses-permission android:name="android.permission.CHANGE_ACCESSIBILITY_VOLUME" />
diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java
index 25fc1ff23561..a8bb5231d8c0 100644
--- a/services/core/java/com/android/server/audio/AudioService.java
+++ b/services/core/java/com/android/server/audio/AudioService.java
@@ -4460,12 +4460,18 @@ public class AudioService extends IAudioService.Stub
private final AudioVolumeChangeHandler mAudioVolumeChangeHandler;
/** @see AudioManager#registerVolumeGroupCallback(executor, callback) */
+ @android.annotation.EnforcePermission(
+ android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED)
public void registerAudioVolumeCallback(IAudioVolumeChangeDispatcher callback) {
+ super.registerAudioVolumeCallback_enforcePermission();
mAudioVolumeChangeHandler.registerListener(callback);
}
/** @see AudioManager#unregisterVolumeGroupCallback(callback) */
+ @android.annotation.EnforcePermission(
+ android.Manifest.permission.MODIFY_AUDIO_SETTINGS_PRIVILEGED)
public void unregisterAudioVolumeCallback(IAudioVolumeChangeDispatcher callback) {
+ super.unregisterAudioVolumeCallback_enforcePermission();
mAudioVolumeChangeHandler.unregisterListener(callback);
}