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

Commit cdaa0b99 authored by Julia Reynolds's avatar Julia Reynolds
Browse files

Relax policy access restriction for adjust volume changes.

Otherwise users can't enter DND while using volume buttons in most
apps.

Bug: 27711587
Change-Id: Idb4976680d9bb88206928a7b623f17d07183ea28
parent 3df6390d
Loading
Loading
Loading
Loading
+0 −3
Original line number Original line Diff line number Diff line
@@ -1076,9 +1076,6 @@ public class AudioManager {
     * <p>
     * <p>
     * This method has no effect if the device implements a fixed volume policy
     * This method has no effect if the device implements a fixed volume policy
     * as indicated by {@link #isVolumeFixed()}.
     * as indicated by {@link #isVolumeFixed()}.
     * <p>From N onward, stream mute changes that would toggle Do Not Disturb are not allowed unless
     * the app has been granted Do Not Disturb Access.
     * See {@link NotificationManager#isNotificationPolicyAccessGranted()}.
     * <p>
     * <p>
     * This method was deprecated in API level 22. Prior to API level 22 this
     * This method was deprecated in API level 22. Prior to API level 22 this
     * method had significantly different behavior and should be used carefully.
     * method had significantly different behavior and should be used carefully.
+2 −8
Original line number Original line Diff line number Diff line
@@ -1290,7 +1290,7 @@ public class AudioService extends IAudioService.Stub {
            // Check if the ringer mode handles this adjustment. If it does we don't
            // Check if the ringer mode handles this adjustment. If it does we don't
            // need to adjust the volume further.
            // need to adjust the volume further.
            final int result = checkForRingerModeChange(aliasIndex, direction, step,
            final int result = checkForRingerModeChange(aliasIndex, direction, step,
                    streamState.mIsMuted, caller);
                    streamState.mIsMuted);
            adjustVolume = (result & FLAG_ADJUST_VOLUME) != 0;
            adjustVolume = (result & FLAG_ADJUST_VOLUME) != 0;
            // If suppressing a volume adjustment in silent mode, display the UI hint
            // If suppressing a volume adjustment in silent mode, display the UI hint
            if ((result & AudioManager.FLAG_SHOW_SILENT_HINT) != 0) {
            if ((result & AudioManager.FLAG_SHOW_SILENT_HINT) != 0) {
@@ -3361,8 +3361,7 @@ public class AudioService extends IAudioService.Stub {
     * adjusting volume. If so, this will set the proper ringer mode and volume
     * adjusting volume. If so, this will set the proper ringer mode and volume
     * indices on the stream states.
     * indices on the stream states.
     */
     */
    private int checkForRingerModeChange(int oldIndex, int direction, int step, boolean isMuted,
    private int checkForRingerModeChange(int oldIndex, int direction, int step, boolean isMuted) {
            String caller) {
        final boolean isTv = mPlatformType == AudioSystem.PLATFORM_TELEVISION;
        final boolean isTv = mPlatformType == AudioSystem.PLATFORM_TELEVISION;
        int result = FLAG_ADJUST_VOLUME;
        int result = FLAG_ADJUST_VOLUME;
        int ringerMode = getRingerModeInternal();
        int ringerMode = getRingerModeInternal();
@@ -3451,11 +3450,6 @@ public class AudioService extends IAudioService.Stub {
            break;
            break;
        }
        }


        if (isAndroidNPlus(caller) && wouldToggleZenMode(ringerMode)
                && !mNm.isNotificationPolicyAccessGrantedForPackage(caller)) {
            throw new SecurityException("Not allowed to change Do Not Disturb state");
        }

        setRingerMode(ringerMode, TAG + ".checkForRingerModeChange", false /*external*/);
        setRingerMode(ringerMode, TAG + ".checkForRingerModeChange", false /*external*/);


        mPrevVolDirection = direction;
        mPrevVolDirection = direction;