Starting with Android 2.0 (API level 5), it is possible to write custom sync providers to integrate with system contacts, calendars, and so forth. Synchronizing with a remote service at this time is unfortunately a precarious endeavor, as any misstep at particular points can literally cause the Android system to crash and reboot (with very little indication as to what was done incorrectly). Hopefully, as Android evolves, synchronizing will become easier and less tricky. For now, the process consists of two parts—authentication (Account Authenticator) and synchronization (Sync Provider).
Before diving into the details of the
two parts, we would like to note that the examples we provide here
have two components—a server side and the Android client side. The
server side that we use is a basic web service that accepts specific
GET requests and responds back with
a JSON-formatted response. The relevant
GET URI as well as the example response are
provided within each section. The source that comes with this book
includes the full server-side source for completeness.
The other thing to note is that in the example we provide, we choose to sync with the account contacts. This is not the only thing that you can sync up. You can sync up with any content provider you have access to, or even to application-specific stored data.
To get the client to authenticate with a remote server using the Android Account Authenticator system, three pieces must ...