在我的应用程序中,我有3个单选按钮,用于让用户更改设备的振铃模式。但是从android 8我面临一个奇怪的问题。
当铃声模式设置为从正常到静音时,仍会听到声音。这不是预期的行为。
但是当振铃模式从正常变为振动然后振动变为静音时。听不到触摸声。这是我的应用程序的预期行为
现在我的问题是为什么在正常到静音模式下发生这种情况。
这是我改变铃声模式的代码
OS 7及以上版本的许可
<uses-permission android:name="android.permission.ACCESS_NOTIFICATION_POLICY" />
在我的代码中,我检查了用户是否给了我ACCESS_NOTIFICATION_POLICY权限,如果没有将他移到ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS以获得权限,之后我让用户更改设置。
public static void setMannerMode(Context context, int ringerMode) {
try {
AudioManager auManager = (AudioManager) context.getSystemService(Context.AUDIO_SERVICE);
auManager.setRingerMode(ringerMode);
} catch (Exception e) {
e.printStackTrace();
}
}
}
我根据选中的单选按钮改变了这样的模式
Util.setMannerMode(getApplicationContext(), AudioManager.RINGER_MODE_NORMAL);
要么
Util.setMannerMode(getApplicationContext(), AudioManager.RINGER_MODE_VIBRATE);
要么
Util.setMannerMode(getApplicationContext(), AudioManager.RINGER_MODE_SILENT);
最后我修复了这个触摸声音问题而在OS 8上的静音模式是通过在NotificationManager.INTERRUPTION_FILTER_NONE
中设置NotificationManager
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE);
有关中断过滤器的更多信息,请访问NotificationManager