Android Communication Suite
- 1 Devlogs
- 1 Total hours
Replacement SMS, Phone, and Contacts apps for AOSP. They aim to replace the very old, material 1-style default apps on degoogled OSes like GrapheneOS.
Replacement SMS, Phone, and Contacts apps for AOSP. They aim to replace the very old, material 1-style default apps on degoogled OSes like GrapheneOS.
Started the contacts app from scratch today. Two commits in.
The bulk of today was designing how contact data reads and writes. Android’s ContactsContract API is cursor-based, untyped, and imperative (i.e. a pain), so I built an abstraction on top of it.
Contacts are structured by being completely unstructured. In essence, the Android contact directory are a list of fields. Each field includes a unique identifier, a MIME type, the contact it aims to be assigned to, and a bunch of data fields (data0..data15). The shape of the data fields are determined by the MIME type. For example, a phone number field could assign data0 to the number itself, and a name field could assign data0 to the given (first) name.
Android has the shape of commonly-used fields stored as a bunch of constants. I used that information to build wrappers for all of the common fields. Each field class knows how to parse a cursor and how to write itself to a WriteBuffer.
I’m using still-experimental Material 3 Expressive APIs. So far, I drew a nice search bar which will animate on open and on close, and currently does nothing else.