From 00bf0f0296b6691a9ed93fa46eccf316f7b0222e Mon Sep 17 00:00:00 2001 From: Megha Joshi Date: Wed, 18 Nov 2009 14:54:03 -0800 Subject: [PATCH] SampleSyncAdapter sample code. --- samples/SampleSyncAdapter/Android.mk | 16 + samples/SampleSyncAdapter/AndroidManifest.xml | 92 +++++ samples/SampleSyncAdapter/_index.html | 26 ++ .../SampleSyncAdapter/res/drawable/icon.png | Bin 0 -> 3180 bytes .../res/layout/login_activity.xml | 110 ++++++ .../SampleSyncAdapter/res/values/strings.xml | 93 +++++ .../res/xml/authenticator.xml | 28 ++ .../SampleSyncAdapter/res/xml/contacts.xml | 29 ++ .../SampleSyncAdapter/res/xml/syncadapter.xml | 27 ++ .../samplesyncadapter_server/app.yaml | 44 +++ .../samplesyncadapter_server/dashboard.py | 273 ++++++++++++++ .../samplesyncadapter_server/index.yaml | 14 + .../samplesyncadapter_server/main.py | 173 +++++++++ .../model/__init__.py | 0 .../model/datastore.py | 93 +++++ .../templates/users.html | 19 + .../templates/view_friends.html | 17 + .../example/android/samplesync/Constants.java | 32 ++ .../authenticator/AuthenticationService.java | 56 +++ .../authenticator/Authenticator.java | 182 +++++++++ .../authenticator/AuthenticatorActivity.java | 263 +++++++++++++ .../samplesync/client/NetworkUtilities.java | 307 +++++++++++++++ .../android/samplesync/client/User.java | 150 ++++++++ .../samplesync/platform/BatchOperation.java | 67 ++++ .../samplesync/platform/ContactManager.java | 356 ++++++++++++++++++ .../platform/ContactOperations.java | 311 +++++++++++++++ .../platform/SampleSyncAdapterColumns.java | 34 ++ .../samplesync/syncadapter/SyncAdapter.java | 106 ++++++ .../samplesync/syncadapter/SyncService.java | 51 +++ 29 files changed, 2969 insertions(+) create mode 100644 samples/SampleSyncAdapter/Android.mk create mode 100644 samples/SampleSyncAdapter/AndroidManifest.xml create mode 100644 samples/SampleSyncAdapter/_index.html create mode 100644 samples/SampleSyncAdapter/res/drawable/icon.png create mode 100644 samples/SampleSyncAdapter/res/layout/login_activity.xml create mode 100644 samples/SampleSyncAdapter/res/values/strings.xml create mode 100644 samples/SampleSyncAdapter/res/xml/authenticator.xml create mode 100644 samples/SampleSyncAdapter/res/xml/contacts.xml create mode 100644 samples/SampleSyncAdapter/res/xml/syncadapter.xml create mode 100644 samples/SampleSyncAdapter/samplesyncadapter_server/app.yaml create mode 100644 samples/SampleSyncAdapter/samplesyncadapter_server/dashboard.py create mode 100644 samples/SampleSyncAdapter/samplesyncadapter_server/index.yaml create mode 100644 samples/SampleSyncAdapter/samplesyncadapter_server/main.py create mode 100644 samples/SampleSyncAdapter/samplesyncadapter_server/model/__init__.py create mode 100644 samples/SampleSyncAdapter/samplesyncadapter_server/model/datastore.py create mode 100644 samples/SampleSyncAdapter/samplesyncadapter_server/templates/users.html create mode 100644 samples/SampleSyncAdapter/samplesyncadapter_server/templates/view_friends.html create mode 100644 samples/SampleSyncAdapter/src/com/example/android/samplesync/Constants.java create mode 100644 samples/SampleSyncAdapter/src/com/example/android/samplesync/authenticator/AuthenticationService.java create mode 100644 samples/SampleSyncAdapter/src/com/example/android/samplesync/authenticator/Authenticator.java create mode 100644 samples/SampleSyncAdapter/src/com/example/android/samplesync/authenticator/AuthenticatorActivity.java create mode 100644 samples/SampleSyncAdapter/src/com/example/android/samplesync/client/NetworkUtilities.java create mode 100644 samples/SampleSyncAdapter/src/com/example/android/samplesync/client/User.java create mode 100644 samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/BatchOperation.java create mode 100644 samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/ContactManager.java create mode 100644 samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/ContactOperations.java create mode 100644 samples/SampleSyncAdapter/src/com/example/android/samplesync/platform/SampleSyncAdapterColumns.java create mode 100644 samples/SampleSyncAdapter/src/com/example/android/samplesync/syncadapter/SyncAdapter.java create mode 100644 samples/SampleSyncAdapter/src/com/example/android/samplesync/syncadapter/SyncService.java diff --git a/samples/SampleSyncAdapter/Android.mk b/samples/SampleSyncAdapter/Android.mk new file mode 100644 index 000000000..a27a68ffb --- /dev/null +++ b/samples/SampleSyncAdapter/Android.mk @@ -0,0 +1,16 @@ +LOCAL_PATH:= $(call my-dir) +include $(CLEAR_VARS) + +LOCAL_MODULE_TAGS := samples tests + +# Only compile source java files in this apk. +LOCAL_SRC_FILES := $(call all-java-files-under, src) + +LOCAL_PACKAGE_NAME := Voiper + +LOCAL_SDK_VERSION := current + +include $(BUILD_PACKAGE) + +# Use the folloing include to make our test apk. +include $(call all-makefiles-under,$(LOCAL_PATH)) diff --git a/samples/SampleSyncAdapter/AndroidManifest.xml b/samples/SampleSyncAdapter/AndroidManifest.xml new file mode 100644 index 000000000..7f9f83bdf --- /dev/null +++ b/samples/SampleSyncAdapter/AndroidManifest.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/samples/SampleSyncAdapter/_index.html b/samples/SampleSyncAdapter/_index.html new file mode 100644 index 000000000..b0fbd4aab --- /dev/null +++ b/samples/SampleSyncAdapter/_index.html @@ -0,0 +1,26 @@ +

A sample that demonstrates how an application can communicate with cloud-based services and synchronize their data with data stored locally in a content provider. +The sample uses two related parts of the Android framework — the account manager and the synchronization manager (through a sync adapter).

+ +

The account manager allows sharing of credentials across multiple applications and services. +Users enter the credentials for each account only once — applications with the USE_CREDENTIALS permission can then query the account manager + to obtain an auth token for the account.The authenticator (a pluggable component of account manager) requests credentials from the user, validates them + with an authentication server running in the cloud, and then stores them to the AccountManager. +This sample demonstrates how to write an authenticator for your +service by extending the new AbstractAccountAuthenticator abstract class. +

+ +

The sync adapter (essential to the synchronization service) declares the account type and ContentProvider authority to the sync manager. +This sample demosntrates how to write your own sync adapters by extending the AbstractThreadedSyncAdapter +abstract class and implementing the onPerformSync() method that gets called whenever the sync manager issues a sync operation for that sync adapter. +

+ +

The service for this sample application is running at:
+http://samplesyncadapter.appspot.com/users +

+ +

When you install this sample application, a new syncable "SampleSyncAdapter" account will be added to your phone's account manager. +You can go to "Settings | Accounts & sync" to view the accounts that are stored in the account manager and to change their sync settings.

+ +Screenshot 1 +Screenshot 2 +Screenshot 3 \ No newline at end of file diff --git a/samples/SampleSyncAdapter/res/drawable/icon.png b/samples/SampleSyncAdapter/res/drawable/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..75024841d327c4fbaefef7c8e9c8d0e892895f93 GIT binary patch literal 3180 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 S`hb-H0000 + + + + + + + + + + + + + + +