An fully-featured SMS app with ability to export and import your SMS conversations.
This is a tech-demonstration app showcasing the latest Android tech stack while solving a real-world use-case.
- Fully offline
- Send, receive SMS messages
- Quick reply to an SMS
- No ads or payments
- Listing of current conversations and messages
- Search with highlighting, select, delete and export functionalities for conversations
- Import a previously exported file to preview and (selectively) save the messages to the device
- Open architecture allowing for future extensions and other formats
- Togglable dark-light theming
3.mov
This is a single-activity app fully built with Jetpack Compose screens. Each screen relies on a navigation route usd by Compose Navigation and a Hilt-instantiated viewmodel. A screen depends on a single UI state model to make it completely reliant on the viewmodel-defined source of truth. The UI state is constructed using Molecule in the viewmodel from smaller pieces of state; this way the architecture is simpler, more controllable and more extensible.
The sharing (exporting and importing of app-generated files) is delegated to system utilities, so the security and privacy is guaranteed by the system and the control is given to the user on how to share.
Specific dependencies:
- Jetpack Compose and Compose Navigation: UI
- Hilt: Dependency injection
- Molecule: usage of Compose Compiler in the VM layer for reactive state construction
- KotlinX Serialization for serialization and deserialization of models into and from files
- Extended Material icons for vector images
- Accompanist Permissions for Composable permission handling
- DataStore for persisting user preferences
How do you use this app?
- Use it as your default SMS app
- Use the app on any phone to export the selected messages
- Share the messages to another device
- Use the app on another device to open the file
- Click the "Save" button on selected conversations to save them to the device.
What if I want a different export/import format?
The app currently does not support other formats. However, you can submit an issue request on github or contribute.
Does this app send any of my data?
No - this app does not communicate with any servers. It is up to you how to share the exported file.
SMS Browsing & Search
Dark Mode
Conversation
Compose