iCall is a mobile application designed for shop owners who transfer mobile credit and recharge games. The app simplifies the process by automating USSD code execution, eliminating the need to memorize and manually enter complex codes.
The application automatically detects the carrier type from the phone number, selects the appropriate SIM card, and executes the transfer operation. It also includes a wallet system for game recharging.
- Automated Credit Transfer - Enter the phone number and amount, the app handles the rest
- Smart SIM Detection - Automatically identifies carrier type (MTN/Syriatel) from phone number
- Multi-SIM Support - Works with dual SIM devices, selecting the correct SIM for each operation
- Game Recharging Wallet - Built-in wallet system for game top-ups
- Transaction History - Complete log of all transfer operations
- Wallet Management - Track balance and recharge operations
- Network Status Verification - Checks network and SIM status before executing operations
One of the main challenges was handling USSD operations across different Android versions. Google has changed the USSD API implementation multiple times, adding more restrictions with each version.
The solution was building a custom Flutter plugin in Kotlin that:
- Detects Android version and selects the appropriate method
- Verifies network and SIM status before execution
- Supports multiple SIM cards
- Uses Accessibility Service to read operation results from system dialogs
| Category | Technology |
|---|---|
| Framework | Flutter |
| State Management | BLoC / Cubit |
| Dependency Injection | Get It |
| Local Storage | Hive CE |
| Network | Dio |
| Code Generation | Freezed, JSON Serializable |
| Native Plugin | Kotlin |






































