Repository navigation
Releases: albertolicea00/Qvacell-apk
Release list
v1.0.11
- Fixed the splash screen to follow the app’s selected theme instead of the system theme.
- Removed the white background from the splash screen logo.
Full Changelog: v1.0.10...v1.0.11
v1.0.10
- Added a warning when no active SIM is detected or the selected SIM is not Cubacel.
- Prevented dynamic dashboard updates when no active SIM is available or the selected SIM is not Cubacel.
- Temporarily disabled Firebase Crashlytics and Performance Monitoring due to connectivity limitations in Cuba. Firebase Analytics remains enabled.
Full Changelog: v1.0.9...v1.0.10
v1.0.9
- Added
SIM settingsbelowUseful links. A bottom sheet now groups- pay-per-use data
- MMS setup
- 3G/4G compatibility checks
- LTE line activation.
- Added
Corporate BalanceandBuy Planshortcuts when long-pressing the app icon. - Updated shortcut names and icons.
- Hidden
Search Directorywhile it remains under development. - Removed incoming *99 caller identification to avoid maintaining duplicate functionality.
This feature is now handled exclusively by LlamaCon99
Outgoing *99 collect calls remain available in Qvacell.
v1.0.8
This release introduces SIM customization, a dedicated corporate dashboard, an events calendar with reminders, and more consistent navigation across the app.
✨ New Features
- SIM customization: Personalize each SIM with a name, icon, and color, and choose your default line.
- Configurable SIM switching: Switch lines using a selection sheet, one-tap cycling, or a dropdown menu.
- Corporate dashboard: View voice, SMS, data, and consumed balances in a dedicated card, with quick access to the corporate portal.
- Events calendar: Track line, plan, and bonus expiration dates across SIMs. The calendar collapses into a weekly view while scrolling.
- Event reminders: Swipe an event to create a notification with its details prefilled and a message tailored to the event.
- LTE-only shortcut: Open Android’s native radio menu on compatible devices, with instructions and warnings before changing network mode.
- Dashboard data management: Delete locally collected dashboard data through a confirmation flow.
🎨 UI & Navigation
- Consistent Home menus: Shared actions follow the same order in manual and dynamic dashboards. Dashboard Options and Help appear only in dynamic mode.
- Dashboard state restoration: Returning from another screen preserves the manual or dynamic dashboard you were using.
- More SIM selectors: Choose the active line from Options, Friends Plan, transfer PIN management, and database search.
- Clearer line terminology: Personal and Corporate labels are used consistently throughout the app.
- Expanded help: Updated guidance for dashboard queries, capture permissions, local storage, and data deletion.
🛠️ Fixes & Reliability
- Per-SIM dashboard data: Keep collected values associated with the correct subscription.
- More flexible USSD parsing: Handle capitalization, spacing, punctuation variations, and data amounts expressed in KB.
- Improved failure guidance: Recognize additional MMI error messages and suggest reviewing the configured line type when appropriate.
- More accurate network advice: Avoid suggesting forced 4G after an earlier query in the same refresh succeeded.
- Automatic update checks: Added daily update checking and a shared update dialog.
- Expanded test coverage: Added regression tests across parsers, SIM settings, dashboard storage, reminders, and core services.
Dynamic dashboard and Events features are available in the Unlocked build. LTE menu availability depends on the device manufacturer.
Full Changelog: v1.0.7...v1.0.8
v1.0.7
This release brings major APK size reductions through R8 shrinking, background data prefetching during onboarding, and flavor-aware update channel handling.
🚀 Performance & Size
- Massive APK size reduction: Enabled R8 code minification and resource shrinking, bringing release APK size down from ~16.7 MB to under ~4 MB.
- Static icon tree-shaking: Replaced reflection in
AndroidIconResolverwith explicit static mapping, allowing R8 to strip unused Material icons. - Icon coverage test: Added unit test to ensure all catalog icons in
codes.jsonresolve correctly without fallbacks.
✨ New Features & UX Improvements
- Onboarding background prefetch: Initiates dashboard data prefetching in the background once call permissions are granted during onboarding, ensuring data is ready upon entering Home.
- Detailed version info: Help screen now displays the full version name, build code, and flavor tag (Unlocked vs Play Store).
🛠️ Fixes & Adjustments
- Flavor-aware update channels: Restricted and sanitized the Play Store update channel in Unlocked builds.
- Adaptive onboarding bullets: Tailored onboarding feature bullets to match the current build flavor.
- Secret menu tap stability: Debounced version tap counter in Options to prevent accidental double-toggling of debug settings.
Full Changelog: v1.0.6...v1.0.7
v1.0.6
Initial English Language Support
- Added Spanish and English string resources and registered both languages in Android’s app language settings.
- Translated the bottom navigation, several screen titles, purchase options, contact messages, and the Quick Actions widget title.
- USSD catalog names and descriptions now display in English when the app’s active language is English.
- Prepared translations for more sections as the rest of the interface is migrated to string resources.
UI & Widgets
- Simplified update modal text and adjusted store-version buttons.
- Updated the 1x1 Quick Action widget with a blue background and app logo.
Dashboards & Fixes
- Synchronized manual queries with the Dynamic Dashboard.
- Fixed the initial load flicker and adjusted tab interaction behaviors.
Full Changelog: v1.0.5...v1.0.6
v1.0.5
🚀 What's New
This release brings a simpler dashboard, more reliable USSD queries, and new controls for calls, SMS history, and loading animations.
✨ New Features
- Simpler Dashboard: The manual dashboard is now the default. Switch to the dynamic dashboard anytime without choosing a permanent mode during onboarding. Dashboard settings also feature clearer action labels.
- Custom Loading Animations: Choose between an animated border, a center line, a perimeter animation, or a skeleton effect for dynamic dashboard cards.
- Direct Dialing: Transfers, recharges, and other supported actions can now dial directly. For
*99and hidden-number calls, choose whether to call directly or open the system dialer. - Granular SMS Controls: Detecting new ETECSA messages and importing older messages are now separate options. SMS history permission is only requested when you explicitly choose to import it.
⚡ Improvements & Fixes
- More Reliable Queries: USSD requests now handle timeouts, lost cellular service, and failures more clearly. Dashboard refreshes stop when a query fails and show guidance for retrying—including when the phone remains on a forced 4G connection.
- Contacts UX: Added a loading indicator while contacts are fetched and a quick-scroll button to return to the top of long lists.
- Updates & Links: Update checks now distinguish connection failures from an up-to-date app. The full GitHub APK link resolves dynamically, and Options now includes links to ETECSA and related online services.
- Corrections: Updated corporate balance labels and the transfer confirmation code, and refined cellular signal status handling.
- Telemetry & Privacy: Added Firebase Analytics, Crashlytics, and Performance Monitoring for screen views, crash reports, startup, and contacts-loading performance. Reports identify the app distribution; custom telemetry strictly excludes contacts, phone numbers, PINs, USSD codes, and responses.
⚠️ Known Limitation
- If cellular service drops during a USSD query, Android or the carrier may still display its own native error dialog for a request already sent.
Full Changelog: v1.0.3...v1.0.5
v1.0.3
Parity-Based Version Codes & Store-to-Unlocked Upgrade Detection
- Parity-based
versionCodestrategy: Configured even codes forstore(base * 2) and odd codes forunlocked(base * 2 + 1), ensuring the GitHub build can always update over an existing Google Play install without losing local data. - Cross-flavor update detection: Enhanced
UpdateCheckerandOptionsScreento detect when a Play Store user can upgrade to the fullunlockedAPK, tailoring the update prompt accordingly. - Makefile workflow: Updated release and bump commands to automate the dynamic base version code computatio
v1.0.2
Compatibility & Installation Fixes
What's Changed in v1.0.2
- Enhanced APK Signing: Enabled both V1 (JAR) and V2 signature schemes to fix installation issues on OEM ROMs (Xiaomi HyperOS / MIUI).
- Target SDK Adjustment: Target SDK aligned to Android 14 (API 34) for broad device and package installer compatibility.
v1.0.0
Initial Release
Your cell in Cuba. We changed the letter, kept the sound.
Tu línea en Cuba al alcance de un toque: sin conexión obligatoria, sin anuncios y con control total.
Welcome to the first official release of Qvacell for Android!
Qvacell is a modern, privacy-respecting, native Android application designed to streamline interacting with ETECSA / Cubacel mobile telephony in Cuba.
From checking complex data/voice balances to one-tap USSD dialing, contact transfers, and offline directories — all from a clean Material 3 interface.
🚀 What's New & Feature Highlights
📊 Dynamic Dashboard & Real-Time Balance (Unlocked Flavor)
- Live Account Cards: Real-time cards for Main Balance (
*222#), Data Packages (*222*328#), Voice Minutes (*222*869#), SMS (*222*767#), Active Bonuses (*222*266#), and National Recharge Limit (*222*546#). - Real Carrier Parsers: Production-ready regex parsers supporting all variations of verbatim ETECSA USSD responses, thoroughly verified with over 68 unit tests.
- Three Data Display States:
- Unqueried: Shows "Sin consultar" before any USSD check is performed.
- No Active Plan: Explicitly identifies "Sin plan" or "No cuenta con paquetes/bonos disponibles" instead of generic dashes or zeros.
- Active Plan: Displays formatted balances, super-scripted cents (
.XX), MB/GB conversions, and remaining days.
- Smart Refresh Optimization: Intelligently inspects the main balance response first; if no voice, SMS, or data plan is detected, subsequent queries are automatically skipped to avoid wasting modem round-trip time (~3–5s per code).
- Signal-Gated Refresh & Warning Banner:
- Gated against cellular connectivity — pull-to-refresh and manual card queries disable when there is no mobile reception.
- Persistent amber banner alerts the user: "Sin señal celular".
- Visual Feedback & Live States:
LoadingCardBorder: Animated horizontal gradient sweep border (3dp stroke) wrapping the specific card currently querying the carrier network (both in batch refresh and single-card taps).- Freshness Color Coding (
TimeAgoText): Relative timestamps with dynamic colors:- 🔴 Red (
#E53935): Never updated / unqueried. - 🟠 Amber (
#FB8C00): Stale data older than the configurable threshold (default: 14 days). - ⚪ Muted Gray: Fresh and recent reading.
- 🔴 Red (
- Material 3 Pull-to-Refresh: Custom dual-arrow indicator with contextual feedback ("Arrastra/Suelta para refrescar").
- Configurable Layouts:
- Choose how action shortcuts (Transfer & Recharge) appear: Buttons, List Card, or Hidden.
- One-tap view switcher in the top bar to toggle between Dynamic Dashboard and the classic Manual Catalog.
📞 Complete Offline USSD Catalog & Dual-SIM
- Full Catalog: Curated codes organized across Saldo y Planes, Compras, Líneas de Asistencia / Emergencias, and Utilidades.
- Safety Confirmations: Free balance queries dial immediately; paid purchase codes trigger a confirmation sheet to prevent unintentional credit deductions.
- Multi-SIM Support: Quick SIM slot selector icon and persistent preferences for dual-SIM devices.
👥 Contacts, PINs & Quick Actions
- Address Book Integration: Call, transfer credit, or place
*99collect calls directly from your contact list. - Encrypted PIN Storage: Safely saves your transfer PIN locally using
EncryptedSharedPreferences. - Plan Amigo Management: Easily register, remove, and view your favorite numbers.
🔔 Reminders, Offline Directories & Tools
- Recurring Reminders: Local
AlarmManageralerts for plan renewals and recharges with 1-tap dial action (persists across device reboots). - Wi-Fi & Navigation Rooms: Built-in offline directory of official ETECSA Wi-Fi hotspots and navigation rooms by province.
- SMS Services: Interactive keyword template catalog for SMS shortcodes (weather, news, utilities, sports).
- Offline Phone Directory Search: Privacy-first reverse number lookup over a user-supplied SQLite database (hidden by default, unlocked by tapping the version number 5 times).
- In-App Update Checker: Checks for new releases directly from GitHub Releases with automatic update dialogs.
📦 Download & Build Flavors
Choose the APK suitable for your needs:
| Package | Recommended For | Description |
|---|---|---|
qvacell-unlocked-release.apk |
Most Users (Direct APK) | Full Experience: Includes background/silent USSD balance capture, SMS receiver, and the live dynamic dashboard. Requires CALL_PHONE, READ_SMS, RECEIVE_SMS, and READ_CALL_LOG. |
qvacell-store-release.apk |
Play Store / Strict Permissions | Safe & Minimal: Manual dialing only via standard system dialer. Requests |
| zero sensitive permissions. |
🛡️ Privacy & Independence
- 100% Offline-First: No analytics, no third-party tracking SDKs, no external telemetry servers, and zero ads. The only external request is an optional GitHub release check initiated by the user.
- Independent Community Software: This app is community-made and is not affiliated with, endorsed by, or sponsored by ETECSA.
🛠️ Technical Specifications
- Stack: 100% Kotlin, Jetpack Compose (Material 3), Compose Navigation, Room Database (append-only fact table), DataStore Preferences.
- Quality: 90+ automated tests covering Room migrations, catalog integrity, and USSD regex parsers.
- Requirements: Android 8.0 (API level 26) or higher. Physical device with a Cubacel SIM required for USSD modem interaction.
💬 Feedback & Community
Encountered an issue or have verbatim ETECSA USSD response text to share? Open an issue on our GitHub Repository