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

19 lines
1.5 KiB
Markdown

# Architecture: Messages (Android, ohne Google)
Same conventions as the others; **no network permission** (SMS goes through the radio, not the internet).
| Schicht | Wahl | warum |
| --- | --- | --- |
| UI | Compose, M3 Expressive, dynamic colour | same as the others |
| Rolle | `RoleManager.ROLE_SMS` | only the default SMS app may write the SMS provider and receives SMS_DELIVER |
| Empfangen | `SMS_DELIVER` receiver (BROADCAST_SMS), joins multipart PDUs, inserts into `Telephony.Sms.Inbox` | default app duty |
| MMS-Pflicht | `WAP_PUSH_DELIVER` receiver (accepted, stored later with MMS support) | required for the role |
| Senden | `SmsManager.divideMessage` + `sendMultipartTextMessage` with sent/delivered PendingIntents; row in outbox → sent/failed | status updates in the provider |
| Antwort ohne UI | `RESPOND_VIA_MESSAGE` service (SEND_RESPOND_VIA_MESSAGE) | phone app "decline with message"; required for the role |
| Daten | system provider via ContentResolver + ContentObserver | no copies |
| Kontakte | PhoneLookup, same helper as Telefon | |
Data: no own schema (DataStore for settings).
Bites: multipart and encoding, dual SIM (`SubscriptionManager`), status callbacks after process death (receiver updates by message id), notification grouping per thread, short codes and alphanumeric senders (no reply possible).
Build order: role + receive + list → conversation + send + status → notifications with reply → new chat, search, archive, delete → MMS.