diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt index fc495f99..53991176 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/activities/MainActivity.kt @@ -81,7 +81,7 @@ class MainActivity : SimpleActivity() { launchSetDefaultDialerIntent() } - if (isQPlus() && config.blockUnknownNumbers) { + if (isQPlus() && (config.blockUnknownNumbers || config.blockHiddenNumbers)) { setDefaultCallerIdApp() } @@ -141,6 +141,7 @@ class MainActivity : SimpleActivity() { } else if (requestCode == REQUEST_CODE_SET_DEFAULT_CALLER_ID && resultCode != Activity.RESULT_OK) { toast(R.string.must_make_default_caller_id_app, length = Toast.LENGTH_LONG) baseConfig.blockUnknownNumbers = false + baseConfig.blockHiddenNumbers = false } } diff --git a/app/src/main/kotlin/com/simplemobiletools/dialer/services/SimpleCallScreeningService.kt b/app/src/main/kotlin/com/simplemobiletools/dialer/services/SimpleCallScreeningService.kt index a2bf3942..c6eaacde 100644 --- a/app/src/main/kotlin/com/simplemobiletools/dialer/services/SimpleCallScreeningService.kt +++ b/app/src/main/kotlin/com/simplemobiletools/dialer/services/SimpleCallScreeningService.kt @@ -1,6 +1,5 @@ package com.simplemobiletools.dialer.services -import android.net.Uri import android.os.Build import android.telecom.Call import android.telecom.CallScreeningService @@ -15,17 +14,27 @@ import com.simplemobiletools.commons.helpers.SimpleContactsHelper class SimpleCallScreeningService : CallScreeningService() { override fun onScreenCall(callDetails: Call.Details) { - val number = Uri.decode(callDetails.handle?.toString())?.substringAfter("tel:") - if (number != null && isNumberBlocked(number.normalizePhoneNumber())) { - respondToCall(callDetails, isBlocked = true) - } else if (number != null && baseConfig.blockUnknownNumbers) { - val simpleContactsHelper = SimpleContactsHelper(this) - val privateCursor = getMyContactsCursor(favoritesOnly = false, withPhoneNumbersOnly = true) - simpleContactsHelper.exists(number, privateCursor) { exists -> - respondToCall(callDetails, isBlocked = !exists) + val number = callDetails.handle?.schemeSpecificPart + when { + number != null && isNumberBlocked(number.normalizePhoneNumber()) -> { + respondToCall(callDetails, isBlocked = true) + } + + number != null && baseConfig.blockUnknownNumbers -> { + val simpleContactsHelper = SimpleContactsHelper(this) + val privateCursor = getMyContactsCursor(favoritesOnly = false, withPhoneNumbersOnly = true) + simpleContactsHelper.exists(number, privateCursor) { exists -> + respondToCall(callDetails, isBlocked = !exists) + } + } + + number == null && baseConfig.blockHiddenNumbers -> { + respondToCall(callDetails, isBlocked = true) + } + + else -> { + respondToCall(callDetails, isBlocked = false) } - } else { - respondToCall(callDetails, isBlocked = false) } }