# Recon map: Google Messages (Android) Scope: conversation list, conversation with bubbles, compose/new chat, SMS send/receive/delivery, notifications with reply, search, archive/delete, contacts integration For: personal use, an SMS app without Google services (project NoGooleApps) Date: 2026-10-17 ## Sources | # | source | URL | notes | | --- | --- | --- | --- | | 1 | screenshots | replica/messages/screens/ref-01..05.png | supplied by user: launcher icon, RCS group chat with reactions, list (store art), list on a phone (older), chat with image. Reference only | | 2 | platform docs | https://developer.android.com/reference/android/provider/Telephony | SMS/MMS provider, default SMS app duties | | 3 | platform docs | https://developer.android.com/reference/android/app/role/RoleManager#ROLE_SMS | default SMS app role requirements | ## Core loop See new texts at a glance and answer in two taps, from the list or straight from the notification. ## Screens | ID | screen | how | purpose | components | states | | --- | --- | --- | --- | --- | --- | | S01 | Conversations | launch | all threads | top bar (title, search, menu), rows (avatar, name or number, snippet with "Du: ", time, unread bold + dot), FAB "Chat starten" | empty, no role, filled, unread | | S02 | Conversation | tap a row | read and reply | top bar (back, avatar, name, call, menu), bubbles (incoming left surface, outgoing right primary), day separators, time + delivery status, composer pill (attach, field, send) | sending, sent, delivered, failed (tap to retry), long text, links | | S03 | New chat | FAB | pick a recipient | "An:" field, contact suggestions, type a number | empty, matches | | S04 | Search | search icon | find messages | field, results with highlighted match | | | S05 | Archived | menu | archived threads | list | empty | | S06 | Settings | menu | options | default app, notifications (system), delivery reports, theme | | | S07 | Notification | system | read and reply without opening | MessagingStyle with sender, direct reply, mark as read | | ## Flows ``` F01 Reply to a new text: notification → reply inline → sent (taps: 2) F02 Read and answer in the app: S01 → S02 → type → send F03 Start a chat: S01 FAB → S03 pick contact → S02 → send F04 Delete / archive a thread: long press in S01 → action F05 Become the default SMS app: first start → system dialog edge: long messages (multipart), no signal (failed, retry), dual SIM, unknown sender, short codes, delivery report ``` ## Components Avatar (photo, initial, unknown) · ConversationRow · Bubble (in, out; first/middle/last grouping radius) · DaySeparator · Composer pill · Status line (Wird gesendet, Gesendet, Zugestellt, Fehler) · FAB extended "Chat starten" · Selection top bar. ## Data model Messages and threads live in the system provider (`Telephony.Sms`, `Telephony.Threads`); as default SMS app we write incoming messages there ourselves. ``` Thread (system) thread_id, recipients, snippet, date, read, archived (Telephony.Threads.ARCHIVED) confidence: high Sms (system) _id, thread_id, address, body, date, type (inbox|sent|outbox|failed|queued), read, status confidence: high Prefs own: delivery_reports, theme confidence: high ``` ## Out of scope - RCS (typing indicators, reactions, high-res media, read receipts over data): Google's RCS backend (Jibe) and carrier deals; not open to other apps. - Google account backup, spam protection, Magic Compose/Gemini, "Messages for web": Google services. - MMS (pictures, group MMS): technically possible for a default SMS app but needs carrier MMS settings and PDU handling; planned after SMS works. ## Size Screens 7, flows 5. Hard parts: (1) default-SMS duties (store incoming, mark read, respond-via-message service, sent/delivered intents, multipart), (2) fast thread list with contact names, (3) MMS later. Size: M.