From e8721807f612fb7e8fb52ec42353125e812f2bcd Mon Sep 17 00:00:00 2001 From: xynngh Date: Sun, 1 Nov 2020 16:10:15 +0400 Subject: [PATCH] Add an option to disable blocked call notifications on Android versions older than 8 --- CHANGELOG.md | 1 + .../NotificationHelper.java | 6 ++++ .../yetanothercallblocker/Settings.java | 9 +++++ .../SettingsActivity.java | 35 +++++++++++++++++++ app/src/main/res/values-el/strings.xml | 1 - app/src/main/res/values-es/strings.xml | 1 - app/src/main/res/values-fr/strings.xml | 1 - app/src/main/res/values-hr/strings.xml | 1 - app/src/main/res/values-nb-rNO/strings.xml | 1 - app/src/main/res/values-pl/strings.xml | 1 - app/src/main/res/values-pt-rBR/strings.xml | 1 - app/src/main/res/values-ru/strings.xml | 5 ++- app/src/main/res/values-tr/strings.xml | 1 - app/src/main/res/values-uk/strings.xml | 1 - app/src/main/res/values/strings.xml | 5 ++- app/src/main/res/xml/root_preferences.xml | 11 ++++-- 16 files changed, 67 insertions(+), 14 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f46b13b..d9856ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### Added +- An option to disable notifications for blocked calls on old Android versions. - Portuguese (Brazil) translation thanks to APL ([@APL](https://hosted.weblate.org/user/APL/)). ### Changed diff --git a/app/src/main/java/dummydomain/yetanothercallblocker/NotificationHelper.java b/app/src/main/java/dummydomain/yetanothercallblocker/NotificationHelper.java index 11ac022..7d3350c 100644 --- a/app/src/main/java/dummydomain/yetanothercallblocker/NotificationHelper.java +++ b/app/src/main/java/dummydomain/yetanothercallblocker/NotificationHelper.java @@ -84,6 +84,12 @@ public class NotificationHelper { } public static void showBlockedCallNotification(Context context, NumberInfo numberInfo) { + if (Build.VERSION.SDK_INT < Build.VERSION_CODES.O) { + if (!App.getSettings().getNotificationsForBlockedCalls()) { + return; + } + } + Notification notification = createBlockedCallNotification(context, numberInfo); String tag = NOTIFICATION_TAG_BLOCKED_CALL diff --git a/app/src/main/java/dummydomain/yetanothercallblocker/Settings.java b/app/src/main/java/dummydomain/yetanothercallblocker/Settings.java index fcaa3a7..9392592 100644 --- a/app/src/main/java/dummydomain/yetanothercallblocker/Settings.java +++ b/app/src/main/java/dummydomain/yetanothercallblocker/Settings.java @@ -27,6 +27,7 @@ public class Settings extends GenericSettings { public static final String PREF_USE_MONITORING_SERVICE = "useMonitoringService"; public static final String PREF_NOTIFICATIONS_KNOWN = "showNotificationsForKnownCallers"; public static final String PREF_NOTIFICATIONS_UNKNOWN = "showNotificationsForUnknownCallers"; + public static final String PREF_NOTIFICATIONS_BLOCKED = "showNotificationsForBlockedCalls"; public static final String PREF_LAST_UPDATE_TIME = "lastUpdateTime"; public static final String PREF_LAST_UPDATE_CHECK_TIME = "lastUpdateCheckTime"; public static final String PREF_COUNTRY_CODE_OVERRIDE = "countryCodeOverride"; @@ -192,6 +193,14 @@ public class Settings extends GenericSettings { setBoolean(PREF_NOTIFICATIONS_UNKNOWN, show); } + public boolean getNotificationsForBlockedCalls() { + return getBoolean(PREF_NOTIFICATIONS_BLOCKED, true); + } + + public void setNotificationsForBlockedCalls(boolean show) { + setBoolean(PREF_NOTIFICATIONS_BLOCKED, show); + } + public long getLastUpdateTime() { return getLong(PREF_LAST_UPDATE_TIME, 0); } diff --git a/app/src/main/java/dummydomain/yetanothercallblocker/SettingsActivity.java b/app/src/main/java/dummydomain/yetanothercallblocker/SettingsActivity.java index 6740676..4d8a37f 100644 --- a/app/src/main/java/dummydomain/yetanothercallblocker/SettingsActivity.java +++ b/app/src/main/java/dummydomain/yetanothercallblocker/SettingsActivity.java @@ -136,6 +136,7 @@ public class SettingsActivity extends AppCompatActivity private static final String PREF_AUTO_UPDATE_ENABLED = "autoUpdateEnabled"; private static final String PREF_NOTIFICATION_CHANNEL_SETTINGS = "notificationChannelSettings"; private static final String PREF_CATEGORY_NOTIFICATIONS = "categoryNotifications"; + private static final String PREF_NOTIFICATIONS_BLOCKED_NON_PERSISTENT = "showNotificationsForBlockedCallsNonPersistent"; private static final String PREF_SCREEN_ADVANCED = "screenAdvanced"; private static final String PREF_COUNTRY_CODES_INFO = "countryCodesInfo"; private static final String PREF_EXPORT_LOGCAT = "exportLogcat"; @@ -149,6 +150,8 @@ public class SettingsActivity extends AppCompatActivity super.onStart(); requireActivity().setTitle(getPreferenceScreen().getTitle()); + + updateBlockedCallNotificationsPreference(); } @Override @@ -284,6 +287,38 @@ public class SettingsActivity extends AppCompatActivity category.setVisible(false); } else { notificationChannelSettings.setVisible(false); + + SwitchPreferenceCompat blockedCallNotificationsPref = + requireNonNull(findPreference(PREF_NOTIFICATIONS_BLOCKED_NON_PERSISTENT)); + blockedCallNotificationsPref.setChecked( + App.getSettings().getNotificationsForBlockedCalls()); + blockedCallNotificationsPref.setOnPreferenceChangeListener((pref, newValue) -> { + if (Boolean.TRUE.equals(newValue)) { + App.getSettings().setNotificationsForBlockedCalls(true); + } else { + new AlertDialog.Builder(requireActivity()) + .setTitle(R.string.are_you_sure) + .setMessage(R.string.blocked_call_notifications_disable_message) + .setPositiveButton(R.string.blocked_call_notifications_disable_confirmation, + (d, w) -> App.getSettings().setNotificationsForBlockedCalls(false)) + .setNegativeButton(android.R.string.cancel, null) + .setOnDismissListener(d -> updateBlockedCallNotificationsPreference()) + .show(); + } + return true; + }); + } + } + + private void updateBlockedCallNotificationsPreference() { + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) return; + + SwitchPreferenceCompat notificationsForBlockedPref = + findPreference(PREF_NOTIFICATIONS_BLOCKED_NON_PERSISTENT); + + if (notificationsForBlockedPref != null) { + notificationsForBlockedPref.setChecked( + App.getSettings().getNotificationsForBlockedCalls()); } } diff --git a/app/src/main/res/values-el/strings.xml b/app/src/main/res/values-el/strings.xml index 3739d8f..80cf4f3 100644 --- a/app/src/main/res/values-el/strings.xml +++ b/app/src/main/res/values-el/strings.xml @@ -101,7 +101,6 @@ Αποκλεισμός μαύρης λίστας Αποκλεισμός κλήσεων από κρυφούς αριθμούς. Ίσως να λειτουργεί διαφορετικά (καλύτερα ή χειρότερα) στη \"Σύνθετη λειτουργία αποκλεισμού κλήσεων\" Αποκλεισμός κρυφών αριθμών - Ειδοποιήσεις εισερχόμενων κλήσεων Ειδοποιήσεις εισερχόμενων κλήσεων Ειδοποιήσεις για άγνωστους καλούντες Εμφάνιση ειδοποιήσεων για γνωστούς καλούντες (αριθμοί στις Επαφές) diff --git a/app/src/main/res/values-es/strings.xml b/app/src/main/res/values-es/strings.xml index 421e23f..d49cc35 100644 --- a/app/src/main/res/values-es/strings.xml +++ b/app/src/main/res/values-es/strings.xml @@ -60,7 +60,6 @@ Ajustes Ajustes Inicio - Notificaciones de llamadas entrantes Notificaciones de llamadas conocidas Mostrar notificaciones de llamadas conocidas (números en Contactos) Notificaciones de llamadas desconocidas diff --git a/app/src/main/res/values-fr/strings.xml b/app/src/main/res/values-fr/strings.xml index 0996243..1d8210d 100644 --- a/app/src/main/res/values-fr/strings.xml +++ b/app/src/main/res/values-fr/strings.xml @@ -65,7 +65,6 @@ Paramètres Principaux Blocage d\'appel - Notifications d\'appels entrants Notifications pour les appelants identifiés Afficher les notifications pour les appelants identifiés (numéros dans les contacts)) Notifications pour les appelants inconnus diff --git a/app/src/main/res/values-hr/strings.xml b/app/src/main/res/values-hr/strings.xml index 39bd5fc..8940cfc 100644 --- a/app/src/main/res/values-hr/strings.xml +++ b/app/src/main/res/values-hr/strings.xml @@ -106,7 +106,6 @@ Sigurna neprofitna organizacija Izvezi Politika - Obavijesti o dolaznim pozivima Kontakt Brojevi koji su prisutni u kontaktima nikada se ne blokiraju, a ime kontakta prikazuje se uz broj ili umjesto broja Uvezi diff --git a/app/src/main/res/values-nb-rNO/strings.xml b/app/src/main/res/values-nb-rNO/strings.xml index badd502..13afa3e 100644 --- a/app/src/main/res/values-nb-rNO/strings.xml +++ b/app/src/main/res/values-nb-rNO/strings.xml @@ -43,7 +43,6 @@ Vis merknader for ukjente oppringere (hverken i kontakter eller i nummerdatabase) Merknader for ukjente oppringere Vis merknader for kjente oppringere (nummer i kontaktliste) - Merknader for innkommende anrop Merknader for kjente oppringere Legg til vurdering (nettbasert) Databasen finnes ikke. For at programmet skal utføre brorparten av dets funksjoner må du laste ned databasen. Den er omtrent 25 MB. diff --git a/app/src/main/res/values-pl/strings.xml b/app/src/main/res/values-pl/strings.xml index a73276c..23b624f 100644 --- a/app/src/main/res/values-pl/strings.xml +++ b/app/src/main/res/values-pl/strings.xml @@ -136,7 +136,6 @@ Wyświetlaj powiadomienia Powiadomienia dla nieznanych połączeń Powiadomienia dla znanych połączeń - Powiadomienia o połączeniach przychodzących Przyznaj uprawnienie „Telefon”, aby zobaczyć ostatnie połączenia Usługa monitorowania Usługi diff --git a/app/src/main/res/values-pt-rBR/strings.xml b/app/src/main/res/values-pt-rBR/strings.xml index 6fe456f..ea4f58d 100644 --- a/app/src/main/res/values-pt-rBR/strings.xml +++ b/app/src/main/res/values-pt-rBR/strings.xml @@ -138,7 +138,6 @@ Notificações de chamadas desconhecidas Exibir notificações para chamadas conhecidas (números de Contatos) Notificações de chamadas conhecidas - Notificações de chamadas recebidas Bloqueio de chamadas Principal Configurações diff --git a/app/src/main/res/values-ru/strings.xml b/app/src/main/res/values-ru/strings.xml index 5b4a19c..09645f0 100644 --- a/app/src/main/res/values-ru/strings.xml +++ b/app/src/main/res/values-ru/strings.xml @@ -100,11 +100,14 @@ Настройки Основные Блокирование вызовов - Уведомления на входящие Уведомления для известных звонящих Показывать уведомления для известных звонящих (номеров из телефонной книги) Уведомления для неизвестных звонящих Показывать уведомления для неизвестных звонящих (отсутствующих в телефонной книге и в базе номеров) + Уведомлять о заблокированных вызовах + Показывать уведомление после блокировки вызова + Вы можете случайно пропустить вызов, если уведомления о блокированных вызовах выключены + Всё равно выключить Настройки уведомлений Продвинутые настройки Коды страны diff --git a/app/src/main/res/values-tr/strings.xml b/app/src/main/res/values-tr/strings.xml index e337618..8bfb13d 100644 --- a/app/src/main/res/values-tr/strings.xml +++ b/app/src/main/res/values-tr/strings.xml @@ -96,7 +96,6 @@ Bilinmeyen arayanlar için bildirimler Bilinen arayanlar için bildirimler Bilinen arayanlar için bildirimleri görüntüle (Kişilerde kayıtlı numaralar) - Gelen arama bildirimleri Arama engelleme Ana kategori Ayarlar diff --git a/app/src/main/res/values-uk/strings.xml b/app/src/main/res/values-uk/strings.xml index fe64955..d9140e0 100644 --- a/app/src/main/res/values-uk/strings.xml +++ b/app/src/main/res/values-uk/strings.xml @@ -88,7 +88,6 @@ Налаштування Основні Блокування викликів - Повідомлення на вхідні Повідомлення для відомих тих, що дзвонять Показувати сповіщення для відомих тих, що дзвонять (номерів з телефонної книги) Повідомлення для невідомих, що дзвонять diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index cbb869c..64bda37 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -90,11 +90,14 @@ Settings Main Call blocking - Incoming calls notifications Notifications for known callers Display notifications for known callers (numbers in Contacts) Notifications for unknown callers Display notifications for unknown callers (neither in Contacts nor in number database) + Notify about blocked calls + Display a notification after a call was blocked + You may accidentally miss a call if calls are blocked without notifications + Disable anyway Notification settings Incoming call notifications diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml index 9dc2e14..b92fd3e 100644 --- a/app/src/main/res/xml/root_preferences.xml +++ b/app/src/main/res/xml/root_preferences.xml @@ -1,5 +1,5 @@ - @@ -66,7 +66,7 @@ + app:title="@string/notification_settings"> +