/* * Copyright (C) 2011 The Android Open Source Project * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.android.browser; import com.android.browser.widget.BookmarkThumbnailWidgetProvider; import android.accounts.Account; import android.accounts.AccountManager; import android.content.BroadcastReceiver; import android.content.ContentResolver; import android.content.Context; import android.content.Intent; import android.content.SharedPreferences; import android.preference.PreferenceManager; import android.provider.BrowserContract; public class AccountsChangedReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // Validate that the account we are syncing to still exists SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(context); String accountType = prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_TYPE, null); String accountName = prefs.getString(BrowserBookmarksPage.PREF_ACCOUNT_NAME, null); if (accountType == null || accountName == null) { // Not syncing, nothing to do return; } Account[] accounts = AccountManager.get(context).getAccountsByType(accountType); for (Account a : accounts) { if (accountName.equals(a.name)) { // Still have a valid account, sweet return; } } // Account deleted - disable sync prefs.edit() .remove(BrowserBookmarksPage.PREF_ACCOUNT_TYPE) .remove(BrowserBookmarksPage.PREF_ACCOUNT_NAME) .commit(); BrowserContract.Settings.setSyncEnabled(context, false); for (Account a : accounts) { ContentResolver.setSyncAutomatically(a, BrowserContract.AUTHORITY, false); ContentResolver.setIsSyncable(a, BrowserContract.AUTHORITY, 0); } BookmarkThumbnailWidgetProvider.refreshWidgets(context, true); } }