diff options
| author | 2022-01-05 14:41:52 +0000 | |
|---|---|---|
| committer | 2022-01-05 14:41:52 +0000 | |
| commit | f3a2e55ff746c1620e11ce60743d5191f96b3206 (patch) | |
| tree | ff32806e934966a8ca450536966af2836b5074b7 | |
| parent | 0a9079431b2c636e305d7397365c04fa15e10717 (diff) | |
| parent | e178f8f635815f8d0ee68fe07289e4f9f02f7f82 (diff) | |
Merge "Add `SystemApi` tag on getLastAudibleStreamVolume"
| -rw-r--r-- | core/api/system-current.txt | 1 | ||||
| -rw-r--r-- | media/java/android/media/AudioManager.java | 3 | ||||
| -rw-r--r-- | services/core/java/com/android/server/audio/AudioService.java | 8 |
3 files changed, 11 insertions, 1 deletions
diff --git a/core/api/system-current.txt b/core/api/system-current.txt index 069cc5e6580d..9bca7fcba028 100644 --- a/core/api/system-current.txt +++ b/core/api/system-current.txt @@ -5252,6 +5252,7 @@ package android.media { method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public static java.util.List<android.media.audiopolicy.AudioVolumeGroup> getAudioVolumeGroups(); method @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, "android.permission.QUERY_AUDIO_STATE"}) public int getDeviceVolumeBehavior(@NonNull android.media.AudioDeviceAttributes); method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, "android.permission.QUERY_AUDIO_STATE"}) public java.util.List<android.media.AudioDeviceAttributes> getDevicesForAttributes(@NonNull android.media.AudioAttributes); + method @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public int getLastAudibleStreamVolume(int); method @IntRange(from=0) public long getMaxAdditionalOutputDeviceDelay(@NonNull android.media.AudioDeviceInfo); method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMaxVolumeIndexForAttributes(@NonNull android.media.AudioAttributes); method @IntRange(from=0) @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public int getMinVolumeIndexForAttributes(@NonNull android.media.AudioAttributes); diff --git a/media/java/android/media/AudioManager.java b/media/java/android/media/AudioManager.java index 982cf07da358..b7e8c8cb0a7e 100644 --- a/media/java/android/media/AudioManager.java +++ b/media/java/android/media/AudioManager.java @@ -1172,7 +1172,8 @@ public class AudioManager { * * @hide */ - @UnsupportedAppUsage + @SystemApi + @RequiresPermission("android.permission.QUERY_AUDIO_STATE") public int getLastAudibleStreamVolume(int streamType) { final IAudioService service = getService(); try { diff --git a/services/core/java/com/android/server/audio/AudioService.java b/services/core/java/com/android/server/audio/AudioService.java index df5d60c3a74d..e00c8a39074a 100644 --- a/services/core/java/com/android/server/audio/AudioService.java +++ b/services/core/java/com/android/server/audio/AudioService.java @@ -3193,6 +3193,13 @@ public class AudioService extends IAudioService.Stub } } + private void enforceQueryStatePermission() { + if (mContext.checkCallingOrSelfPermission(Manifest.permission.QUERY_AUDIO_STATE) + != PackageManager.PERMISSION_GRANTED) { + throw new SecurityException("Missing QUERY_AUDIO_STATE permissions"); + } + } + private void enforceQueryStateOrModifyRoutingPermission() { if (mContext.checkCallingOrSelfPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) != PackageManager.PERMISSION_GRANTED @@ -4094,6 +4101,7 @@ public class AudioService extends IAudioService.Stub /** Get last audible volume before stream was muted. */ public int getLastAudibleStreamVolume(int streamType) { + enforceQueryStatePermission(); ensureValidStreamType(streamType); int device = getDeviceForStream(streamType); return (mStreamStates[streamType].getIndex(device) + 5) / 10; |