Files
2026-10-17 16:49:43 +02:00

65 lines
3.9 KiB
Markdown

# 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.