$ show ryfineZ/carrier-ims-for-pixel
Carrier IMS for Pixel is an Android application that provides a comprehensive toolkit for configuring IMS (IP Multimedia Subsystem) settings on Google Pixel devices. It leverages Shizuku to perform privileged operations such as overriding carrier configurations (VoLTE, VoWiFi, VoNR, 5G NR), modifying APN settings, fixing captive portal detection, and reading IMS registration status. The app features a Jetpack Compose UI with multiple tabs (IMS, Extra, Support, Partners, About), per-SIM configuration management, Quick Settings tiles, in-app updates, and a donation/ad system. The architecture follows a clean separation with ViewModels, a central ShizukuProvider that bridges IPC to instrumentation classes, and reusable utility modules. While primarily an application, it includes diagnostic logging and data persistence for configuration backups, giving it a minor hybrid character.
The LLM identified 5 files worth highlighting for reuse:
Central content provider that exposes privileged operations via Shizuku. It implements a generic startInstrumentation method with mutex, timeout, and result handling, allowing any Instrumentation subclass to be executed with shell delegation. This pattern is reusable for any Android app needing Shizuku-based privileged operations.
Instrumentation class that builds a PersistableBundle from a feature map and calls CarrierConfigManager.overrideConfig. The buildBundle static method centralizes all carrier config key constants and default values, making it easy to add or modify config overrides. This pattern can be extracted for any app that needs to modify carrier settings.
Maps a Bundle from CarrierConfigManager to Feature enum values, encapsulating the mapping between config keys and UI features. This isolates the config key logic from the rest of the app and can be reused in any project that needs to parse carrier config bundles.
Pure utility object containing static methods for building URLs with query parameters, parsing ad responses, validating payment proofs, and constructing backup snapshots. It is well-tested and has no internal dependencies, making it directly reusable in other Kotlin projects.
Captures logcat output into an in-memory list with a maximum size, providing a simple API for adding and clearing logs. This can be extracted as a reusable logging utility for any Android app that needs to display or export system logs.