У меня есть собственный класс SettingsPreferences
, в котором я занимаюсь изменением некоторых настроек моего приложения Voice Recorder. На данный момент пытаюсь справиться с включением и выключением режима "Не беспокоить".
Я создал метод requestAccessNotificationPermission
, который вызывается другим методом, checkIfNotifGranted
, который проверяет, предоставлен ли доступ к политике уведомлений.
@RequiresApi(api = Build.VERSION_CODES.M)
void checkIfNotifGranted() {
if (!notificationManager.isNotificationPolicyAccessGranted()) {
requestAccessNotificationPermission();
}
}
@RequiresApi(api = Build.VERSION_CODES.M)
private void requestAccessNotificationPermission(Activity activity) {
Intent intent = new Intent(Settings.ACTION_NOTIFICATION_POLICY_ACCESS_SETTINGS);
activity.startActivity(intent);
}
Мой план состоит в том, чтобы, если это будет работать, я бы затем использовал два метода ниже для обработки выключения и включения режима "Не беспокоить".
@RequiresApi(api = Build.VERSION_CODES.M)
void doNotDisturbOff() {
notificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_NONE);
}
@RequiresApi(api = Build.VERSION_CODES.M)
void doNotDisturbOn() {
notificationManager.setInterruptionFilter(NotificationManager.INTERRUPTION_FILTER_ALL);
}
Однако я не знаю, как решить эту Activity
проблему. Я попытался указать this
в качестве аргумента для вызова requestAccessNotificationPermission
, но это не сработало.
У меня не может быть этих методов в моем SettingsFragment
, так как я не могу вызвать нестатический c метод из контекста stati c. Поэтому у меня есть приведенный ниже код для вызова методов в моем пользовательском классе.
final Preference dnd = findPreference("doNotDisturb");
assert dnd != null;
dnd.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String boolCheck = newValue.toString();
if (boolCheck.equals("true")) {
new SettingsPreferences().checkIfNotifGranted();
new SettingsPreferences().doNotDisturbOn();
}
else if (boolCheck.equals("false")) {
new SettingsPreferences().checkIfNotifGranted();
new SettingsPreferences().doNotDisturbOff();
}
return false;
}
});
Любая помощь или объяснение были бы очень признательны, поскольку я действительно озадачен этим.
Спасибо ты.