An Android application that reads and displays detailed SIM card information for devices with dual SIM support β including phone numbers, carrier names, and signal strength β all from a clean, intuitive interface.
DualSimReader was built as a personal project to explore Android's Telephony APIs and understand how dual SIM devices expose subscription and network information at the software level.
Many Android users with dual SIM phones lack a simple, unified view of both SIMs' details. This app solves that by fetching and displaying all available SIM metadata in one place β without needing to dig through system settings.
- πΆ Signal Strength β Real-time signal level for each active SIM slot
- π‘ Carrier Info β Network operator name and MCC/MNC identifiers
- π’ Phone Number β Reads the subscriber number (MSISDN) if exposed by the SIM
- π SIM Slot Detection β Identifies SIM 1 and SIM 2 independently
- π Live Refresh β Refreshes SIM data dynamically on demand
| Layer | Technology |
|---|---|
| Language | Java |
| Platform | Android (SDK 21+) |
| APIs Used | TelephonyManager, SubscriptionManager |
| UI | XML Layouts, Material Components |
| Build Tool | Gradle |
(Add screenshots of the app here β e.g., the SIM info dashboard, dual SIM view)
- Android Studio (Flamingo or later recommended)
- Android device or emulator running API 21 (Lollipop) or higher
- A physical dual SIM device for full testing
-
Clone the repository
git clone https://github.com/aishwarya14-dev/DualSimReader.git
-
Open in Android Studio
- Go to
File β Openand select the cloned folder
- Go to
-
Build and Run
- Connect your Android device or start an emulator
- Click Run βΆ or use
Shift + F10
The app requires the following permissions declared in AndroidManifest.xml:
<uses-permission android:name="android.permission.READ_PHONE_STATE" />
<uses-permission android:name="android.permission.READ_PHONE_NUMBERS" />Note: On Android 6.0+,
READ_PHONE_STATEis a runtime permission. The app handles the permission request flow gracefully.
DualSimReader/
βββ app/
β βββ src/
β β βββ main/
β β βββ java/ # Java source files
β β βββ res/ # Layouts, drawables, strings
β β βββ AndroidManifest.xml
β βββ build.gradle
βββ build.gradle
- Working with Android's
SubscriptionManagerAPI to enumerate SIM subscriptions - Handling runtime permissions introduced in Android Marshmallow
- Differences in API availability across Android versions (API 22 vs 26+)
- Reading telephony metadata that behaves differently across OEMs and carriers
- Phone number display depends on the carrier β some SIMs do not expose the MSISDN programmatically
- Emulators only simulate a single SIM; a physical dual SIM device is needed for full testing
- Behaviour may vary across Android OEM skins (MIUI, One UI, etc.)
Aishwarya
- GitHub: @aishwarya14-dev
This project is open source and available under the MIT License.