Block Calls, Not Connections.
A modern, open-source Android app that gives you back your focus by intelligently filtering incoming calls based on your rules.
Ever been in a focused work session, an important meeting, or a critical moment in a game, only to have an unwanted call interrupt you? Worse, on many networks, that incoming call can momentarily kill your phone's mobile data connection, disrupting your flow entirely.
Dend was engineered as a robust solution to this exact problem. It's a lightweight, private, and powerful firewall for your calls, ensuring that only the people you trust can make your phone ring.
This project showcases a production-ready application built with modern, best-practice Android architecture.
-
Three-Mode Firewall:
- Firewall On: Instantly and silently rejects any number on your personal blacklist.
- Zen Mode: Rejects all calls except those on your trusted whitelist. Perfect for zero-distraction focus sessions.
- Firewall Off: Allows all calls through as normal.
-
Intelligent Rules Management:
- Persistent Blacklist & Whitelist: Your rules are saved securely on your device in a Room database, surviving app restarts.
- "Promote & Demote" Logic: A number can only exist on one list. Adding a number to the whitelist automatically removes it from the blacklist (and vice-versa), ensuring predictable behavior.
- Forgiving "Undo" Action: Accidentally removed a rule? A
Snackbarwith an "Undo" action provides a safety net, powered by a persistentisPendingDeletionflag in the database to handle app closures gracefully.
-
State-Aware Activity Log:
- Proof & Transparency: View a chronological history of every call the app has blocked, complete with timestamps and the mode it was blocked in.
- Contextual Headers: The log is beautifully organized with "Today," "Yesterday," and date-based
stickyHeaders for effortless scanning. - Smart Actions: Each log item features a dynamic set of quick actions. "Allow" a number (add to whitelist), "Call Back," or "Add Contact." Actions are intelligently hidden if they are not relevant (e.g., "Add Contact" is hidden if the number is already in your device contacts).
-
Robust & Resilient Call Screening:
- System-Level Integration: Built with
CallScreeningServiceto intercept calls before they ring. - High-Reliability Architecture: Engineered to prevent the "stuck network" bug by elevating process priority with a
ForegroundServiceduring the critical call-rejection window. - Intelligent Number Normalization: Uses Google's
libphonenumberto parse and normalize numbers to the E.164 standard, correctly handling local and international formats to ensure rules are matched reliably.
- System-Level Integration: Built with
-
Modern & Decoupled Architecture:
- 100% Kotlin & Jetpack Compose: A fully declarative UI built for performance and state-driven rendering.
- Clean MVVM & UDF: Follows modern MVVM principles with Unidirectional Data Flow (
Flow,StateFlow). - Centralized Event Bus: A generic
UiEventBusdecouples ViewModels from the UI, allowing any feature to request aSnackbaror other global UI action without direct dependencies. - Dependency Injection: Uses Koin for a clear and maintainable dependency graph.
-
Private by Design: All rule processing and call logging happens entirely on your device. Your contacts, rules, and call patterns never leave your phone.
Coming soon... The UI is being polished to perfection!
- Download the latest APK from the Releases Page.
- Install the app on your Android device (Android 10/Q or higher).
- Crucial Step: On first launch, the app will guide you to set Dend as the default "Caller ID & spam app". This permission is required by Android for the app to screen and manage incoming calls.
- Start building your firewall rules and enjoy the silence!
This project is an active exploration of modern Android development.
- Custom Firewall Rules: Block calls based on patterns (e.g., hidden numbers, international numbers).
- Automated SMS Replies: Optionally send a configurable, automatic text message when a call is blocked.
- Onboarding Flow: A guided setup experience for new users.
- Intelligent Spam Database Integration: (Future) Optionally sync with a known spam number database.
This is an open-source project built for learning and solving a real-world problem. Contributions, feature ideas, and pull requests are welcome and greatly appreciated! Please see CONTRIBUTING.md for more details.
This project is licensed under the Apache License 2.0. See the LICENSE file for details.
