Files
NoGooleApps/replica/messages/recon.md
T
2026-10-17 16:49:43 +02:00

3.9 KiB

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.