У меня есть следующий Broadcast Receiver для получения изменений в моем фильтре прерываний.
public class DndBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED);
if (NotificationManager.ACTION_INTERRUPTION_FILTER_CHANGED.equals(intent.getAction())) {
NotificationManager mNotificationManager = (NotificationManager) context.getSystemService(Context.NOTIFICATION_SERVICE);
assert mNotificationManager != null;
if (mNotificationManager.getCurrentInterruptionFilter() == NotificationManager.INTERRUPTION_FILTER_NONE) {
System.out.println("None");
} else if (mNotificationManager.getCurrentInterruptionFilter() == NotificationManager.INTERRUPTION_FILTER_ALARMS) {
System.out.println("Alarms");
} else if (mNotificationManager.getCurrentInterruptionFilter() == NotificationManager.INTERRUPTION_FILTER_ALL) {
System.out.println("All");
} else if (mNotificationManager.getCurrentInterruptionFilter() == NotificationManager.INTERRUPTION_FILTER_PRIORITY) {
System.out.println("Priority");
} else if (mNotificationManager.getCurrentInterruptionFilter() == NotificationManager.INTERRUPTION_FILTER_UNKNOWN) {
System.out.println("Unknown");
}
}
}
}
Это работает очень хорошо, когда я переключаю кнопку DND «Быстрые настройки», но когда я включаю или выключаю DND с помощью кнопки на панели фактических настроек, никаких изменений не обнаружено.Есть ли очевидная причина, по которой это может быть?