如何解决不允许更改请勿打扰状态,在 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 举报,一经查实,本站将立刻删除。