KBlock - A call blocking android app (currently works for API 28+)
- It imports all the user contacts from the Contacts Content Provider, cleans duplicate contacts (if any,in app, without altering the actual contacts list) and loads it into perisistent storage(SQLite database), then gives user an option to block(or unblock) a contact. A refresh button is also provided in case there is a change in user contacts and thus KBlock's contact list is in sync with the user's contacts.
- Users can also block numbers which are not a part of their contacts, through the floating button (bottom right) in the 'Blocked' tab.
- Blocked contacts are saved separately in the 'Blocked' tab and can be unblocked immediately.
- As soon as a particular blocked user places a call, the call is immediately disconnected and the user is notified about it as well.
- Finally we also provide a log of calls from the blocked user (which was disconnected by the app) in the 'Logs' tab.
- Kotlin - Official programming language for Android development.
- Coroutines - For asynchronous programming
- Android Architecture Components - Collection of libraries that help you design robust, testable, and maintainable apps.
- LiveData - Data objects that notify views when the underlying database changes.
- ViewModel - Stores UI-related data that isn't destroyed on UI changes.
- ViewBinding - Generates a binding class for each XML layout file present in that module and allows you to more easily write code that interacts with views.
- Room - SQLite object mapping library.
- Material Components for Android - Modular and customizable Material Design UI components for Android.
This app uses MVVM (Model View View-Model) architecture.