diff --git a/AndroidManifest.xml b/AndroidManifest.xml
index 0c114ba..3a067e9 100644
--- a/AndroidManifest.xml
+++ b/AndroidManifest.xml
@@ -27,6 +27,8 @@
     <uses-permission android:name="android.permission.USE_CREDENTIALS" />
     <uses-permission android:name="android.permission.MANAGE_ACCOUNTS" />
     <uses-permission android:name="android.permission.READ_SYNC_STATS" />
+    <uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
+    <uses-permission android:name="android.permission.WRITE_SYNC_SETTINGS" />
     <uses-permission android:name="android.permission.INTERNET" />
     <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_READ" />
     <uses-permission android:name="android.permission.SUBSCRIBED_FEEDS_WRITE" />
diff --git a/src/com/android/providers/calendar/CalendarSyncAdapter.java b/src/com/android/providers/calendar/CalendarSyncAdapter.java
index 06a7ea6..77d6549 100644
--- a/src/com/android/providers/calendar/CalendarSyncAdapter.java
+++ b/src/com/android/providers/calendar/CalendarSyncAdapter.java
@@ -572,6 +572,13 @@
         super.onSyncStarting(context, account, manualSync, result);
     }
 
+    public boolean getIsSyncable(Account account)
+            throws IOException, AuthenticatorException, OperationCanceledException {
+        Account[] accounts = AccountManager.get(getContext()).getAccountsByTypeAndFeatures(
+                "com.google.GAIA", new String[]{"legacy_hosted_or_google"}, null, null).getResult();
+        return accounts.length > 0 && accounts[0].equals(account) && super.getIsSyncable(account);
+    }
+
     private void deletedEntryToContentValues(Long syncLocalId, EventEntry event,
             ContentValues values) {
         // see #deletedCursorToEntry.  this deletion cannot be an exception to a recurrence (e.g.,
@@ -1138,7 +1145,7 @@
                     syncExtras.clear();
                     syncExtras.putBoolean("moveWindow", true);
                     syncExtras.putString("feed", feedUrl);
-                    mContentResolver.startSync(Calendar.CONTENT_URI, syncExtras);
+                    ContentResolver.requestSync(null /* account */, Calendar.AUTHORITY, syncExtras);
                 }
             }
             getServerDiffsForFeed(context, baseSyncData, tempProvider, feedUrl,
diff --git a/tests/src/com/android/providers/calendar/TestCalendarSyncAdapter.java b/tests/src/com/android/providers/calendar/TestCalendarSyncAdapter.java
index bcc1c73..01d969e 100644
--- a/tests/src/com/android/providers/calendar/TestCalendarSyncAdapter.java
+++ b/tests/src/com/android/providers/calendar/TestCalendarSyncAdapter.java
@@ -27,9 +27,12 @@
 import android.os.Bundle;
 import android.text.format.DateUtils;
 import android.accounts.Account;
+import android.accounts.AuthenticatorException;
+import android.accounts.OperationCanceledException;
 
 import java.util.Calendar;
 import java.util.TimeZone;
+import java.io.IOException;
 
 
 public class TestCalendarSyncAdapter extends TempProviderSyncAdapter {
@@ -57,6 +60,11 @@
         return false;
     }
 
+    public boolean getIsSyncable(Account account) 
+            throws IOException, AuthenticatorException, OperationCanceledException {
+        return true;
+    }
+
     @Override
     public void getServerDiffs(SyncContext context, SyncData syncData,
             SyncableContentProvider tempProvider,
