diff options
author | Fred Quintana <fredq@google.com> | 2009-08-17 13:05:39 -0700 |
---|---|---|
committer | Fred Quintana <fredq@google.com> | 2009-08-18 11:06:52 -0700 |
commit | 4a6679b97e0285c5b65ec5c0d9080ff90d3e9e81 (patch) | |
tree | 3356b9b309a39344d320635140a4380d5e1e5318 /core/java/android/content/AbstractThreadedSyncAdapter.java | |
parent | 084cd8266ecbc70714fd3c7d27488411a00338b7 (diff) | |
download | frameworks_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.java | 20 |
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); |