Added blocking calls from hidden numbers

This commit is contained in:
merkost
2023-06-23 14:25:23 +10:00
parent 939cba30ea
commit cedcd6e304
2 changed files with 22 additions and 12 deletions

View File

@@ -81,7 +81,7 @@ class MainActivity : SimpleActivity() {
launchSetDefaultDialerIntent() launchSetDefaultDialerIntent()
} }
if (isQPlus() && config.blockUnknownNumbers) { if (isQPlus() && (config.blockUnknownNumbers || config.blockHiddenNumbers)) {
setDefaultCallerIdApp() setDefaultCallerIdApp()
} }
@@ -141,6 +141,7 @@ class MainActivity : SimpleActivity() {
} else if (requestCode == REQUEST_CODE_SET_DEFAULT_CALLER_ID && resultCode != Activity.RESULT_OK) { } 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) toast(R.string.must_make_default_caller_id_app, length = Toast.LENGTH_LONG)
baseConfig.blockUnknownNumbers = false baseConfig.blockUnknownNumbers = false
baseConfig.blockHiddenNumbers = false
} }
} }

View File

@@ -1,6 +1,5 @@
package com.simplemobiletools.dialer.services package com.simplemobiletools.dialer.services
import android.net.Uri
import android.os.Build import android.os.Build
import android.telecom.Call import android.telecom.Call
import android.telecom.CallScreeningService import android.telecom.CallScreeningService
@@ -15,19 +14,29 @@ import com.simplemobiletools.commons.helpers.SimpleContactsHelper
class SimpleCallScreeningService : CallScreeningService() { class SimpleCallScreeningService : CallScreeningService() {
override fun onScreenCall(callDetails: Call.Details) { override fun onScreenCall(callDetails: Call.Details) {
val number = Uri.decode(callDetails.handle?.toString())?.substringAfter("tel:") val number = callDetails.handle?.schemeSpecificPart
if (number != null && isNumberBlocked(number.normalizePhoneNumber())) { when {
number != null && isNumberBlocked(number.normalizePhoneNumber()) -> {
respondToCall(callDetails, isBlocked = true) respondToCall(callDetails, isBlocked = true)
} else if (number != null && baseConfig.blockUnknownNumbers) { }
number != null && baseConfig.blockUnknownNumbers -> {
val simpleContactsHelper = SimpleContactsHelper(this) val simpleContactsHelper = SimpleContactsHelper(this)
val privateCursor = getMyContactsCursor(favoritesOnly = false, withPhoneNumbersOnly = true) val privateCursor = getMyContactsCursor(favoritesOnly = false, withPhoneNumbersOnly = true)
simpleContactsHelper.exists(number, privateCursor) { exists -> simpleContactsHelper.exists(number, privateCursor) { exists ->
respondToCall(callDetails, isBlocked = !exists) respondToCall(callDetails, isBlocked = !exists)
} }
} else { }
number == null && baseConfig.blockHiddenNumbers -> {
respondToCall(callDetails, isBlocked = true)
}
else -> {
respondToCall(callDetails, isBlocked = false) respondToCall(callDetails, isBlocked = false)
} }
} }
}
private fun respondToCall(callDetails: Call.Details, isBlocked: Boolean) { private fun respondToCall(callDetails: Call.Details, isBlocked: Boolean) {
val response = CallResponse.Builder() val response = CallResponse.Builder()