Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 4e8ef477 authored by Eric Laurent's avatar Eric Laurent Committed by Android (Google) Code Review
Browse files

Merge "Introduce MODIFY_AUDIO_SYSTEM_SETTINGS permission"

parents cac94a44 e38c2cf5
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -209,6 +209,7 @@ package android {
    field public static final String MIGRATE_HEALTH_CONNECT_DATA = "android.permission.MIGRATE_HEALTH_CONNECT_DATA";
    field public static final String MODIFY_APPWIDGET_BIND_PERMISSIONS = "android.permission.MODIFY_APPWIDGET_BIND_PERMISSIONS";
    field public static final String MODIFY_AUDIO_ROUTING = "android.permission.MODIFY_AUDIO_ROUTING";
    field public static final String MODIFY_AUDIO_SYSTEM_SETTINGS = "android.permission.MODIFY_AUDIO_SYSTEM_SETTINGS";
    field public static final String MODIFY_CELL_BROADCASTS = "android.permission.MODIFY_CELL_BROADCASTS";
    field public static final String MODIFY_DAY_NIGHT_MODE = "android.permission.MODIFY_DAY_NIGHT_MODE";
    field @Deprecated public static final String MODIFY_NETWORK_ACCOUNTING = "android.permission.MODIFY_NETWORK_ACCOUNTING";
@@ -6609,8 +6610,8 @@ package android.media {
  }
  public class AudioDeviceVolumeManager {
    method @NonNull @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public android.media.VolumeInfo getDeviceVolume(@NonNull android.media.VolumeInfo, @NonNull android.media.AudioDeviceAttributes);
    method @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING) public void setDeviceVolume(@NonNull android.media.VolumeInfo, @NonNull android.media.AudioDeviceAttributes);
    method @NonNull @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS}) public android.media.VolumeInfo getDeviceVolume(@NonNull android.media.VolumeInfo, @NonNull android.media.AudioDeviceAttributes);
    method @RequiresPermission(anyOf={android.Manifest.permission.MODIFY_AUDIO_ROUTING, android.Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS}) public void setDeviceVolume(@NonNull android.media.VolumeInfo, @NonNull android.media.AudioDeviceAttributes);
  }
  public final class AudioFocusInfo implements android.os.Parcelable {
+8 −0
Original line number Diff line number Diff line
@@ -5335,6 +5335,14 @@
    <permission android:name="android.permission.MODIFY_AUDIO_ROUTING"
        android:protectionLevel="signature|privileged|role" />

    <!--@SystemApi Allows an application to modify system audio settings that shouldn't be
        controllable by external apps, such as volume settings or volume behaviors for audio
        devices, regardless of their connection status.
        <p>Not for use by third-party applications.
        @hide -->
    <permission android:name="android.permission.MODIFY_AUDIO_SYSTEM_SETTINGS"
                android:protectionLevel="signature|privileged" />

    <!-- @SystemApi Allows an application to access the uplink and downlink audio of an ongoing
        call.
         <p>Not for use by third-party applications.</p>
+1 −0
Original line number Diff line number Diff line
@@ -465,6 +465,7 @@ applications that come with the platform
        <!-- Permission required for CTS test - SystemMediaRouter2Test -->
        <permission name="android.permission.MEDIA_CONTENT_CONTROL"/>
        <permission name="android.permission.MODIFY_AUDIO_ROUTING"/>
        <permission name="android.permission.MODIFY_AUDIO_SYSTEM_SETTINGS"/>
        <!-- Permission required for CTS test - CallAudioInterceptionTest -->
        <permission name="android.permission.CALL_AUDIO_INTERCEPTION"/>
        <!-- Permission required for CTS test - CtsPermission5TestCases -->
+9 −4
Original line number Diff line number Diff line
@@ -16,6 +16,7 @@

package android.media;

import android.Manifest;
import android.annotation.CallbackExecutor;
import android.annotation.IntDef;
import android.annotation.NonNull;
@@ -318,8 +319,10 @@ public class AudioDeviceVolumeManager {
     * @param ada the device for which volume is to be modified
     */
    @SystemApi
    // TODO alternatively require MODIFY_AUDIO_SYSTEM_SETTINGS when defined
    @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
    @RequiresPermission(anyOf = {
            Manifest.permission.MODIFY_AUDIO_ROUTING,
            Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS
    })
    public void setDeviceVolume(@NonNull VolumeInfo vi, @NonNull AudioDeviceAttributes ada) {
        try {
            getService().setDeviceVolume(vi, ada, mPackageName);
@@ -340,8 +343,10 @@ public class AudioDeviceVolumeManager {
     * @param ada the device for which volume is to be retrieved
     */
    @SystemApi
    // TODO alternatively require MODIFY_AUDIO_SYSTEM_SETTINGS when defined
    @RequiresPermission(android.Manifest.permission.MODIFY_AUDIO_ROUTING)
    @RequiresPermission(anyOf = {
            Manifest.permission.MODIFY_AUDIO_ROUTING,
            Manifest.permission.MODIFY_AUDIO_SYSTEM_SETTINGS
    })
    public @NonNull VolumeInfo getDeviceVolume(@NonNull VolumeInfo vi,
            @NonNull AudioDeviceAttributes ada) {
        try {
+2 −0
Original line number Diff line number Diff line
@@ -106,9 +106,11 @@ interface IAudioService {
    void setStreamVolumeWithAttribution(int streamType, int index, int flags,
            in String callingPackage, in String attributionTag);

    @EnforcePermission(anyOf = {"MODIFY_AUDIO_ROUTING", "MODIFY_AUDIO_SYSTEM_SETTINGS"})
    void setDeviceVolume(in VolumeInfo vi, in AudioDeviceAttributes ada,
            in String callingPackage);

    @EnforcePermission(anyOf = {"MODIFY_AUDIO_ROUTING", "MODIFY_AUDIO_SYSTEM_SETTINGS"})
    VolumeInfo getDeviceVolume(in VolumeInfo vi, in AudioDeviceAttributes ada,
            in String callingPackage);

Loading