android - 不允许更改请勿打扰状态,在 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
我不确定问题出在哪里。有人可以帮我吗?
解决方案
推荐阅读
- python - 在 Telegram 中使用 getUserProfilePhotos 获取图片配置文件用户
- r - 如何保存文件的最后一列有一个值
- sql - SQL切换多边形字符串中的经纬度位置
- c++ - 重设 wm 和 BadWindow 错误
- javascript - 在 vue.js 中工作我如何从我的谷歌电子表格中提取和发布数据?
- robotframework - 如何启动包含数字的变量索引?机器人框架
- javascript - React - 当我们点击 img 时改变视图
- homestead - Laravel Homestead Mailhog 监听套接字时出错:listen tcp 0.0.0.0:1025: bind: address already in use
- reactjs - MERN Stack - 在表格行上使用 onClick 函数提交数据 - 有可能吗?
- amazon-web-services - 当我尝试使用签名帖子上传到 s3 时访问被拒绝,这可能是存储桶策略吗?