CallGuardR 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/Agentry433/CallGuardR.git cd CallGuardR -
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: Agentry433
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 CallGuardR useful, you can support the development with a donation:
TON Wallet:
UQAnWldcIWfwKUmnJN5kMqW5VY6SuVwTtrnRpDEE_rilh8Qj
Bitcoin (BTC):
bc1qelwv8jm2j9pughk5rte0fap2gzvyhtgzwglutf
Ethereum (ETH):
0x6Ab5F41A4eF61E6F7517f4D89f759c94500e66e1
Every donation helps keep the project alive and motivates further development. Thank you! β€οΈ
Made with β€οΈ for protecting against unwanted calls