在我的应用程序中,我有3个单选按钮,用于让用户更改设备的振铃模式。但是从android 8我面临一个奇怪的问题。
当铃声模式从正常设置为静音时,仍会听到声音。这不是预期的行为。
但是当铃声模式从正常变为振动然后振动变为静音时。触摸声音不听到。这是我的应用程序的预期行为
现在我的问题是为什么会出现在Normal to Silent模式中。
这是我更改铃声模式的代码
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);
答案 0 :(得分:0)
最后,我在 OS 8 上的 SILENT 模式下修复了此触控声音问题,方法是在NotificationManager.INTERRUPTION_FILTER_NONE
NotificationManager
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE);
有关中断过滤器的更多信息,请参见NotificationManager