微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

不允许更改请勿打扰状态,在 Worker 中使用 AudioManager setRingerMode(int i)

如何解决不允许更改请勿打扰状态,在 Worker 中使用 AudioManager setRingerMode(int i)

我正在使用 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

我不确定问题出在哪里。有人可以帮我吗?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。