summaryrefslogtreecommitdiffstats
path: root/core/java/android/content/AbstractThreadedSyncAdapter.java
diff options
context:
space:
mode:
authorFred Quintana <fredq@google.com>2009-08-17 13:05:39 -0700
committerFred Quintana <fredq@google.com>2009-08-18 11:06:52 -0700
commit4a6679b97e0285c5b65ec5c0d9080ff90d3e9e81 (patch)
tree3356b9b309a39344d320635140a4380d5e1e5318 /core/java/android/content/AbstractThreadedSyncAdapter.java
parent084cd8266ecbc70714fd3c7d27488411a00338b7 (diff)
downloadframeworks_base-4a6679b97e0285c5b65ec5c0d9080ff90d3e9e81.zip
frameworks_base-4a6679b97e0285c5b65ec5c0d9080ff90d3e9e81.tar.gz
frameworks_base-4a6679b97e0285c5b65ec5c0d9080ff90d3e9e81.tar.bz2
make syncadapter set whether the account is syncable
Diffstat (limited to 'core/java/android/content/AbstractThreadedSyncAdapter.java')
-rw-r--r--core/java/android/content/AbstractThreadedSyncAdapter.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/core/java/android/content/AbstractThreadedSyncAdapter.java b/core/java/android/content/AbstractThreadedSyncAdapter.java
index f15a902..538225a 100644
--- a/core/java/android/content/AbstractThreadedSyncAdapter.java
+++ b/core/java/android/content/AbstractThreadedSyncAdapter.java
@@ -44,16 +44,23 @@ public abstract class AbstractThreadedSyncAdapter {
/** Kernel event log tag. Also listed in data/etc/event-log-tags. */
public static final int LOG_SYNC_DETAILS = 2743;
+ private final boolean mAutoInitialize;
/**
* Creates an {@link AbstractThreadedSyncAdapter}.
- * @param context the {@link Context} that this is running within.
+ * @param context the {@link android.content.Context} that this is running within.
+ * @param autoInitialize if true then sync requests that have
+ * {@link ContentResolver#SYNC_EXTRAS_INITIALIZE} set will be internally handled by
+ * {@link AbstractThreadedSyncAdapter} by calling
+ * {@link ContentResolver#setIsSyncable(android.accounts.Account, String, int)} with 1 if it
+ * is currently set to <0.
*/
- public AbstractThreadedSyncAdapter(Context context) {
+ public AbstractThreadedSyncAdapter(Context context, boolean autoInitialize) {
mContext = context;
mISyncAdapterImpl = new ISyncAdapterImpl();
mNumSyncStarts = new AtomicInteger(0);
mSyncThread = null;
+ mAutoInitialize = autoInitialize;
}
class ISyncAdapterImpl extends ISyncAdapter.Stub {
@@ -66,6 +73,15 @@ public abstract class AbstractThreadedSyncAdapter {
// check it and when we use it
synchronized (this) {
if (mSyncThread == null) {
+ if (mAutoInitialize
+ && extras != null
+ && extras.getBoolean(ContentResolver.SYNC_EXTRAS_INITIALIZE, false)) {
+ if (ContentResolver.getIsSyncable(account, authority) < 0) {
+ ContentResolver.setIsSyncable(account, authority, 1);
+ }
+ syncContextClient.onFinished(new SyncResult());
+ return;
+ }
mSyncThread = new SyncThread(
"SyncAdapterThread-" + mNumSyncStarts.incrementAndGet(),
syncContextClient, authority, account, extras);