Android 如何将振铃器模式完全设置为静音?

Android 如何将振铃器模式完全设置为静音?,android,alarmmanager,android-audiomanager,Android,Alarmmanager,Android Audiomanager,我正在尝试制作一个应用程序,通过使用AlarmManager将铃声模式自动设置为静音。它正在运行,但未按预期工作 @Override public void onReceive(Context context, Intent intent) { AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE); audioManager.setRingerMode(

我正在尝试制作一个应用程序,通过使用AlarmManager将铃声模式自动设置为静音。它正在运行,但未按预期工作

@Override
public void onReceive(Context context, Intent intent) {
    AudioManager audioManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
    audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);
}
基于Android文档:

振铃器\u模式\u静音-将静音且不会静音的振铃器模式 振动(这将覆盖振动设置。)

但我发现我的手机还在震动。它只需打开“请勿打扰”并将振铃器模式更改为振动。我试着将它设置为RINGER_MODE_NORMAL和RINGER_MODE_Vibration,它可以工作,但不能与RINGER_MODE_SILENT一起工作。我已授予我的应用程序访问权限“请勿打扰”并使用以下权限:

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


是否有任何错误或遗漏的步骤?

最终找到了解决此问题的方法。如果“请勿打扰”处于开启状态,android似乎仍然认为手机处于静默模式,甚至手动将铃声模式设置为正常模式。因此,我需要先将振铃器模式设置为正常模式,等待1秒,然后再次设置为静音模式

if(audioManager.getRingerMode() == AudioManager.RINGER_MODE_SILENT) {
        audioManager.setRingerMode(AudioManager.RINGER_MODE_NORMAL);
}

// Wait for 1 second
// Direct changing won't set the Do Not Disturb on
try {
    Thread.sleep(1000);
} catch (InterruptedException e) {
    e.printStackTrace();
}

audioManager.setRingerMode(AudioManager.RINGER_MODE_SILENT);