Skip to content

aj3423/SpamBlocker

Repository files navigation

SpamBlocker

Android Call/SMS blocker. (Android 10+)

Get it on F-Droid

Table of Contents

Screenshot

Call / SMS Report spam Setting Notification

How it works

It works without replacing your default call/SMS app.

  • For call:
      It's the Caller ID app
  • For SMS:
      It takes over the SMS notifications, it only filters the notifications, the spam messages will still be present in the SMS app.

    💡 Please turn off the notification permission of the default SMS app in system settings, otherwise there will be double SMS notifications.

It's not necessary to leave this app running in the background, you can kill the process after it's configured, if it doesn't work, please refer to this.

Features:

Filter It checks
Contacts Whether from a contact
Contact Group Whether it's a member of some contact group
STIR/SHAKEN STIR/SHAKEN attestation
Repeated Whether it's been calling repeatedly
Dialed Whether you have dialed the number
Call Alert Allow calls after receiving SMS messages like: "[From ...] We are calling to inform ..., please feel free to answer."
Recent Apps Allow calls if some apps have been used recently.
Use case:
  You ordered Pizza online and soon they call you to refund.
Meeting Mode Decline calls during online video meetings.
Off Time A time period that always allows calls, usually no spams at night.
Spam Database If it matches any spam number in the database. Any public downloadable spam databases can be integrated, such as the DNC.
Instant Query Check the incoming number online in real time, querying multiple API endpoints simultaneously, such as the PhoneBlock.
Report Spam Automatically or manually report the number to build our crowd-sourced databases, protecting others and yourself.
Regex
(regular expression)
Check the Wiki for examples.

Some typical patterns:
- Any number: .* (the regex .* is equivalent to the wildcard * in other apps)
- Exact number: 12345
- Start with 400: 400.*
- End with 123: .*123
- 7 digits: .{7}
- Shorter than 5: .{0,4}
- Longer than 10: .{11,}
- Unknown number (it's actually empty text): .{0} or ^$
- Contain word "verification": .*verification.*
- Contain any of the words: .*(police|hospital|verification).*
- Start with 400, with leading country code 11 or not: (?:11)?400.*
- Extract verification code from SMS message: code.*?(\d+)

Permissions

Permission (all optional) Why
INTERNET For database downloading / instant query / number reporting
MANAGE_EXTERNAL_STORAGE (Android 11+)
READ/WRITE_EXTERNAL_STORAGE (Android 10)
For file access from automated workflow
ANSWER_PHONE_CALLS Reject, Answer and Hang-up calls
POST_NOTIFICATIONS Show notifications
READ_CONTACTS For matching contacts
RECEIVE_SMS For receiving new messages
READ_CALL_LOG
READ_SMS
For checking if a call is repeated
PACKAGE_USAGE_STATS For feature: Recent Apps (check whether an app has been used recently)
READ_PHONE_STATE For BlockMode: Answer+Hang-up (monitor ringing state)

Privacy

  • For offline features

    No data collection.

  • For online features:

    The API endpoints will see your:

    • IP address
    • TLS and TCP fingerprints (which would reveal your Android version)
    • The reported number(including the country code)

    Nothing else.

    You can also disable the internet access if you want, or download the offline apk from the release page.

  • No communication with other apps

  • Reproducible apk

  • Apk signing signature:

    apksigner verify --print-certs SpamBlocker.apk

    7b1ce727856f3427eab1fadfad6c9730cd4e6ba201661547f009206377dffb58

Full Privacy Policy

Support

  • Most problems have already been discussed in the issue list, please search first.
  • There's also a matrix channel

FAQ

Language support

Languages are translated using Gemini AI(golang script), fire an issue for requesting a new language support.

Contributing

Donate

❤️ https://aj3423.github.io/donate