Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 

History

2 Commits
Β 
Β 

Repository files navigation

πŸ“± DualSimReader

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.


πŸ” About the Project

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.


✨ Features

  • πŸ“Ά 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

πŸ› οΈ Tech Stack

Layer Technology
Language Java
Platform Android (SDK 21+)
APIs Used TelephonyManager, SubscriptionManager
UI XML Layouts, Material Components
Build Tool Gradle

πŸ“Έ Screenshots

(Add screenshots of the app here β€” e.g., the SIM info dashboard, dual SIM view)


πŸš€ Getting Started

Prerequisites

  • Android Studio (Flamingo or later recommended)
  • Android device or emulator running API 21 (Lollipop) or higher
  • A physical dual SIM device for full testing

Installation

  1. Clone the repository

    git clone https://github.com/aishwarya14-dev/DualSimReader.git
  2. Open in Android Studio

    • Go to File β†’ Open and select the cloned folder
  3. Build and Run

    • Connect your Android device or start an emulator
    • Click Run β–Ά or use Shift + F10

πŸ” Permissions

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_STATE is a runtime permission. The app handles the permission request flow gracefully.


πŸ“‚ Project Structure

DualSimReader/
β”œβ”€β”€ app/
β”‚   β”œβ”€β”€ src/
β”‚   β”‚   └── main/
β”‚   β”‚       β”œβ”€β”€ java/          # Java source files
β”‚   β”‚       β”œβ”€β”€ res/           # Layouts, drawables, strings
β”‚   β”‚       └── AndroidManifest.xml
β”‚   └── build.gradle
└── build.gradle

🧠 What I Learned

  • Working with Android's SubscriptionManager API 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

⚠️ Known Limitations

  • 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.)

πŸ‘©β€πŸ’» Author

Aishwarya


πŸ“„ License

This project is open source and available under the MIT License.

About

A plugin to fetch SIM details using Android Telephony Manager class.

Topics

Resources

Stars

0 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors