Skip to main content

0.18.0 - 05/10/2026

  • Add subscription mode: the new subscriptionMode parameter of enableSpamControl and enableSpamControlSilently (SpamControl.SubscriptionMode.FREE, the default, or PAID) makes call blocking follow the client’s subscription state, which the SDK keeps up to date on its own. Add getSubscriptionState, getSubscriptionMode and an optional refreshSubscriptionState to apply a state change right away, and the SpamControl.SubscriptionState enum (ACTIVE, PENDING_PAYMENT, CANCELLED, PENDING_CANCELATION and SUBSCRIPTION_REQUIRED). In PAID mode, PENDING_PAYMENT suspends blocking (calls are marked ALLOWED_PENDING_PAYMENT) and CANCELLED turns the SDK off; SUBSCRIPTION_REQUIRED turns it off in both modes
  • Remove getNoPaymentStatus, setNoPaymentStatus and getSubscription: the pending-payment suspension is now owned by the SDK and derived from getSubscriptionState() == PENDING_PAYMENT. A device that ran the old subscription flow moves to PAID mode on update and stays suspended if it was
  • Fix isNumberBlocked returning null for a number the user blocked or unblocked manually that has no call in history. It now returns true or false, and still returns null for a number unknown to the SDK

0.17.1 - 14/07/2026

  • Update the monitoring dependency, fixing telemetry uploads that were rejected or stuck on devices with non-Latin-digit locales (e.g. Farsi) and preventing a rare crash from concurrent use of shared date formatters

0.17.0 - 23/06/2026

  • Allow unblocking a number that is blocked only by a category rule (e.g. CATEGORY_FILTERED_PREFIX or the unknown-callers category); previously unblockNumber failed silently and the call kept being blocked
  • Prefix all SDK database file names with sc_ and migrate existing databases in place, preventing collisions with a host app database of the same name

0.16.1 - 10/06/2026

  • Prefix all module resource names with sc_ to prevent silent override of host app resources during resource merge
  • Restrict the dialer stub activity to ACTION_DIAL intent filters, so browser and Google tel: link clicks no longer route to it; call screening and blocking are unaffected

0.16.0 - 25/05/2026

  • Add categoryRule, isVisible and isTrusted fields to Category. Category should be visible to the user based on isVisible field.
  • Fix SpamControlSyncDatabaseWorker not being registered for users with pre-existing subscriptions
  • Fix workers skipping when device has no validated internet connection
  • Fix race condition in credential encryption when multiple WorkManager workers run concurrently
  • Fix a bug where numbers from the remote database that were manually unblocked would still be treated as blocked
  • Security fix: close external bypass vector on the permissions activity

0.15.0 - 12/05/2026

  • Remove setBlockUnknownCallers and isBlockUnknownCallersEnabled — unknown caller blocking is now driven by backend configuration
  • Add dedicated monitoring event for outgoing call screening interruption
  • Fix ConcurrentModificationException in call screening service caused by concurrent access from coroutine and main thread
  • Fix SQLiteNotADatabaseException by recovering from wrong or missing encryption keys, with cooldown to avoid repeated re-downloads
  • Fix potential ANR by moving a blocking WorkManager call to a background thread
  • Fix potential deadlock when the user events database reaches its record limit
  • Add missing consumer ProGuard rules for public API types, preventing R8 from obfuscating fields accessed by integrators in release builds

0.14.2 - 16/04/2026

  • Fix block with leading 0s + ddi

0.14.1 - 01/04/2026

  • Fix duplicated monitoring requests
  • Retrofit update from 2.9.0 to 2.11.0
  • Add proguard rules inside sdk so the integrator doesn’t need to add any

0.14.0 - 23/03/2026

  • Add SpamControl.BlockReturn.AlreadyBlocked to blockNumber method
  • Fix some http errors from monitoring feature
  • Improve dependency injection used internally
  • Update database sync to be more frequent

0.13.0 - 13/02/2026

  • Add subscription feature with new PhoneCall.Status field (ALLOWED_PENDING_PAYMENT) and getSubscription, cancelSubscription, getNoPaymentStatus and setNoPaymentStatus methods.
  • Add date to manual block feature
  • Add category icons
  • Add extra data to request headers
  • Add more monitoring events
  • Update monitoring version

0.12.0 - 15/01/2026

  • Add monitoring feature

0.11.15 - 12/12/2025

  • Improve Contacts query performance, which was making call interception to fail

0.11.14 - 03/12/2025

  • Add STG/PROD environment through SpamControl.enableSpamControl and SpamControl.enableSpamControlSilently
  • Reduce SpamControlUploadDataWorker to run each hour instead of 15m to 15m
  • Reduce retry times for SpamControlUploadDataWorker from 5 to 3
  • Add check to isSpamControlOn before triggering triggerGetDatabaseWorker when getDatabaseVersionAndAmountOfNumbers fails
  • Remove getAmountOfBlockedNumbers method

0.11.13 - 18/11/2025

  • Fix isNumberBlocked not considering numbers from remote database

0.11.12 - 17/11/2025

  • Fix behavior and name of SpamControl.isNumberBlocked (from inNumberBlocked)

0.11.11 - 13/11/2025

  • Add stopAndTriggerUploadDataWorker and call it when starting every SpamControlUploadDataWorker

0.11.10 - 11/11/2025

  • Add rules database to limit user events to 1 week old and 300 rows in size
  • Fix SpamControlUploadDataWorker being launched as not unique work, causing a lot of history and parallel coroutines
  • Add SpamControl.EnableReturn.AlreadyOn and SpamControl.EnableSilentlyReturn.AlreadyOn
  • Add dispatcher to retrofit with maxRequests = 8
  • Decrease getUserEvents batch during upload from 50 to 10
  • Add userEvents database migration 4 to 5 to clean all database
  • Add in memory cache inside SharedPreferencesHelper

0.11.9 - 25/09/2025

  • Fix missed databaseID when migrating out of EncryptedSharedPref
  • Update contacts query for more precision when checking if a call is originating from a known contact

0.11.8 - 11/09/2025

  • Add SpamControl.enableSpamControlSilently method so the app host can disable or enable the sdk remotely if the user has already granted the mandatory permissions
  • Add SpamControl.disableSpamControl in SyncDatabaseWorker if mandatory permission is missing
  • Add another userEvents database migration to clean all database
  • Fix SpamControl.disableSpamControl triggering turn off data event even and uploadDataWorker only when flag is on
  • Fix CryptoManager.decrypt crash and disableSpamControl if apiKey or phoneNumber are null in SharedPreferencesHelper

0.11.7 - 05/09/2025

  • Fix event loop crash by adding a userEvents database migration

0.11.6 - 01/09/2025

  • Fix request loop when auth data is lost
  • Fix sdk-version in request header from “currentVersion”
  • Add date to all user event requests
  • Improve performance by:
    • Access device call log only when necessary
    • Update EncryptedSharedPref to be volatile

0.11.5 - 26/08/2025

  • Update coroutines usage to prevent ANRs
  • Update database creation to be lazy
  • Improve performance of some sql queries
  • Stop database operations if CallScreeningService times out

0.11.4 - 15/08/2025

  • Fix a bug where sdk was not asking for optional permissions if the Spam Id permission was already granted. Added hasSpamControlOptionalPermissions public method.

0.11.3 - 11/08/2025

  • Downgrade dependencies to avoid conflicts. Upgrading back is expected in a few weeks.
    • Kotlin from 2.0.21 to 1.9.25
    • KSP from 2.0.21-1.0.28 to 1.9.25-1.0.20
    • AndroidX Room from 2.7.2 to 2.6.1
    • AndroidX Core-ktx from 1.16.0 to 1.8.0
    • AndroidX AppCompat from 1.7.0 to 1.6.1
    • Android Material from 1.12.0 to 1.6.1

0.11.2 - 06/08/2025

  • Fix a bug where the default dialer permission was not being asked correctly for apis 24-28
  • Support for 16kb memory page size. For this, we updated SqlCipher from 4.5.4 to 4.7.2

0.11.1 - 01/08/2025

  • Fix a bug where calls from a contact were allowed even with number blocked manually

0.11.0 - 31/07/2025

  • Add register for OUTGOING calls to improve spam detection
  • Add current database_id field to PhoneCall object
  • Add Popup trigger by extending SpamControlPopupService
  • Add rule to allow calls from contacts
  • Add rule to block calls from private numbers
  • Fix a bug in database sync where numbers were not being mapped correctly

0.10.0 - 25/07/2025

  • Add daily database sync instead of daily full download

0.9.2 - 23/07/2025

  • Add CATEGORY_FILTERED_PREFIX and CATEGORY_NOT_MAPPED to PhoneCallStatus enum

0.9.1 - 22/07/2025

  • Fix Keystore handling with Cipher when storing apiKey and phoneNumber

0.9.0 - 16/07/2025

  • Add call information from system to improve spam detection
  • Improve our SQL query to match numbers with leading 0s
  • Update Gradle, AGP, Kotlin and some dependencies versions

0.8.5 - 25/06/2025

  • Update READ_CONTACTS as an optional permission

0.8.4 - 18/06/2025

  • Add Relinker to reload sqlcipher lib in case of UnsatisfiedLinkError
  • Add id to PhoneCall object in database
  • Update try catch in ContactsHelper.getContacts when trying to check if a call was from a contact
  • Change EncryptedSharedPreferences to SharedPreferences + Keystore to safely store apiKey and phoneNumber

0.8.3 - 06/06/2025

  • Fix a bug where empty phoneNumber was being categorized with categories that had empty prefix regex
  • Fix a bug where getString in ContactsHelper is crashing
  • Update minSdkVersion to 24 + Remove SpamControlReceiver

0.8.2 - 05/06/2025

  • Fix a bug where user refused to give READ_CONTACTS permission
  • Fix a bug where a call doesn’t have a caller number

0.8.1 - 21/05/2025

  • Fix a bug where not blocked categories were not registered in the respective PhoneCall objects
  • Fix a bug where calls were registered with corresponding status even when sdk was off (Ex: MANUAL_BLOCK)
  • Fix a bug where unblocking a number would unblock all matching numbers with different ids

0.8.0 - 05/05/2025

  • Add BlockReturn, UnblockReturn and DeleteCallsReturn so different uis can be shown to the user in different situations
  • Add contact name to phoneCall name
  • Fix UserEvents crashing the app when happening at the same second