Не разрешено изменять состояние «Не беспокоить» с помощью AudioManager setRingerMode(int i) в Worker

Я использую AudioManager и setRingerMode для программной настройки звонка. Это делается с помощью Worker.

public class SettingWorker extends Worker {

    /**
     * Tag of the class
     */
    static final private String TAG = "SettingWorker";

    Context mContext;

    /**
     * Constructor of the worker
     * @param context context of the application
     * @param workerParams ..
     */
    public SettingWorker(@NonNull Context context, @NonNull WorkerParameters workerParams) {
        super(context, workerParams);
        mContext = context;
    }

    @NonNull
    @Override
    public Result doWork() {        
        setSetting("SLT");    
        Logger.logD(TAG, "doWork(): finished");
        return Result.success();
    }


    /**
     * method to set the sound setting as requested and found
     * @param setting SND, SLT, VBR
     */
    private void setSetting(String setting) {

        Logger.logD(TAG, "setSetting(): setting is " + setting);

        AudioManager am = (AudioManager) mContext.getSystemService(mContext.AUDIO_SERVICE);
        switch(setting) {
            case "SLT":
                am.setRingerMode(AudioManager.RINGER_MODE_SILENT);
                am.adjustVolume(AudioManager.ADJUST_MUTE, AudioManager.FLAG_SHOW_UI);
            case "VBR":
                am.setRingerMode(AudioManager.RINGER_MODE_VIBRATE);
                am.adjustVolume(AudioManager.ADJUST_MUTE, AudioManager.FLAG_SHOW_UI);
                //TODO: perhaps let user decide the volume
            case "SND":
                am.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
                am.adjustVolume(AudioManager.ADJUST_UNMUTE, AudioManager.FLAG_SHOW_UI);
        }
    }
}

Я добавил необходимое разрешение в свой манифест:

<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY"/>

Однако я все еще получаю исключение:

 Caused by: java.lang.SecurityException: Not allowed to change Do Not Disturb state

Я не уверен, в чем проблема. Может ли кто-нибудь помочь мне, пожалуйста?


person someStudentCS    schedule 07.07.2021    source источник