CallGuard is an Android application for blocking unwanted incoming and outgoing calls based on number masks and contact list. The app uses Android system APIs (Call Screening and Call Redirection) for efficient call filtering.
- Number masks β Set masks (e.g.,
+7900*,8495*) to block entire number ranges - Block unknown callers β Reject calls from numbers not in your address book
- Automatic filtering β Uses system
CallScreeningServiceto block calls before your phone rings
- Outgoing call verification β Control outgoing calls to numbers outside your contacts
- Protection modes:
- Off β no restrictions
- Warning β shows notification before calling
- Block β completely blocks the call
- Logging β All incoming and outgoing calls are recorded with details
- Decision history β See which calls were blocked and why
- Password protection β Set a password to protect settings and blocking rules
- Privacy β No one can change your rules without authorization
- Russian β Full Russian language support
- English β Full English translation
- Switching β Change language directly within the app
- Android 7.0+ (API 24)
- Android 10+ for outgoing call protection (API 29)
- Device with telephony support (not a tablet without SIM)
- Contacts permission (optional, for blocking unknown callers)
-
Clone the repository:
git clone https://github.com/YOUR_USERNAME/CallGuard.git cd CallGuard -
Open in Android Studio:
- Launch Android Studio
- Select
File > Open - Navigate to the project folder
-
Build the project:
./gradlew assembleDebug
-
Install the APK:
adb install app/build/outputs/apk/debug/app-debug.apk
- Download APK from the Releases section
- Enable installation from unknown sources in device settings
- Install the APK
- Open the app
- Click "Activate Service"
- In the dialog, select "Use as call screening app"
- The app will receive
ROLE_CALL_SCREENINGrole
- Go to the "Main" tab
- Click the + button (floating action button at bottom right)
- Enter a number or mask:
- Exact number:
+79851234567 - Mask (prefix):
+7900*,8495*
- Exact number:
- Click "Save"
- Go to the "Settings" tab
- Enable the "Block numbers not in contacts" switch
- Grant contacts permission if prompted
- Go to the "Settings" tab
- Click "Activate Protection"
- Select "Use as call redirection app"
- Choose a mode: Off, Warning, or Block
- Go to the "Settings" tab
- Click "Set Password"
- Enter and confirm your password (minimum 6 characters)
| Component | Description |
|---|---|
CallBlockerService |
CallScreeningService for blocking incoming calls |
OutgoingCallRedirectionService |
CallRedirectionService for verifying outgoing calls |
MaskPrefs |
Mask storage in SharedPreferences |
ScreeningEventLog |
Call event logging |
ContactsLookup |
Check if number exists in contacts |
AppLanguageManager |
UI language management |
AppLockPrefs |
App password management |
- CallScreeningService (API 24+) β incoming call blocking
- CallRedirectionService (API 29+) β outgoing call verification
- RoleManager β obtaining system roles
- ContentResolver β contacts access
We welcome contributions! Please read CONTRIBUTING.md for guidelines.
- Fork the repository
- Create your feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Follow the official Kotlin coding conventions
- Use
ktlintfor style checking - Add comments to complex code sections
- Write meaningful commit messages
This project is licensed under the MIT License. See the LICENSE file for details.
- AndroidX β Modern Android components
- Material Components β Material Design
- Kotlin β Development language
- Author: YOUR_NAME
- Email: YOUR_EMAIL
- GitHub: YOUR_USERNAME
Make sure that:
- You have activated the service and obtained
ROLE_CALL_SCREENING - The mask is configured correctly
- Call Screening is supported on your device (Android 7.0+)
Call Screening requires a device with telephony support (with SIM card). The feature may not be available on tablets without SIM.
All data (masks, password, log) is stored locally in the app's SharedPreferences. No data is sent to any server.
If you forgot your password, clear the app data in Android settings: Settings > Apps > CallGuard > Storage > Clear Data.
If you find CallGuard useful, you can support the development with a donation:
TON Wallet:
UQD-RzivaF2yxBF81Zzf44WE84Y3pS24QL751Z5nYC3PosRJ
Every donation helps keep the project alive and motivates further development. Thank you! β€οΈ
Made with β€οΈ for protecting against unwanted calls