List of usage examples for android.content ContentResolver SYNC_OBSERVER_TYPE_SETTINGS
int SYNC_OBSERVER_TYPE_SETTINGS
To view the source code for android.content ContentResolver SYNC_OBSERVER_TYPE_SETTINGS.
Click Source Link
From source file:com.mobileglobe.android.customdialer.common.model.AccountTypeManager.java
/** * Internal constructor that only performs initial parsing. *///from w w w .jav a2 s . c o m public AccountTypeManagerImpl(Context context) { mContext = context; mFallbackAccountType = new FallbackAccountType(context); mAccountManager = AccountManager.get(mContext); mListenerThread = new HandlerThread("AccountChangeListener"); mListenerThread.start(); mListenerHandler = new Handler(mListenerThread.getLooper()) { @Override public void handleMessage(Message msg) { switch (msg.what) { case MESSAGE_LOAD_DATA: loadAccountsInBackground(); break; case MESSAGE_PROCESS_BROADCAST_INTENT: processBroadcastIntent((Intent) msg.obj); break; } } }; mInvitableAccountTypeCache = new InvitableAccountTypeCache(); // Request updates when packages or accounts change IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); filter.addAction(Intent.ACTION_PACKAGE_REMOVED); filter.addAction(Intent.ACTION_PACKAGE_CHANGED); filter.addDataScheme("package"); mContext.registerReceiver(mBroadcastReceiver, filter); IntentFilter sdFilter = new IntentFilter(); sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE); sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE); mContext.registerReceiver(mBroadcastReceiver, sdFilter); // Request updates when locale is changed so that the order of each field will // be able to be changed on the locale change. filter = new IntentFilter(Intent.ACTION_LOCALE_CHANGED); mContext.registerReceiver(mBroadcastReceiver, filter); if (ActivityCompat.checkSelfPermission(mContext, Manifest.permission.GET_ACCOUNTS) != PackageManager.PERMISSION_GRANTED) { // TODO: Consider calling // ActivityCompat#requestPermissions // here to request the missing permissions, and then overriding // public void onRequestPermissionsResult(int requestCode, String[] permissions, // int[] grantResults) // to handle the case where the user grants the permission. See the documentation // for ActivityCompat#requestPermissions for more details. return; } mAccountManager.addOnAccountsUpdatedListener(this, mListenerHandler, false); ContentResolver.addStatusChangeListener(ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, this); mListenerHandler.sendEmptyMessage(MESSAGE_LOAD_DATA); }
From source file:com.android.contacts.model.AccountTypeManager.java
/** * Internal constructor that only performs initial parsing. */// w ww. j av a2 s . c o m public AccountTypeManagerImpl(Context context) { mContext = context; mLocalAccountLocator = DeviceLocalAccountLocator.create(context); mTypeProvider = new AccountTypeProvider(context); mFallbackAccountType = new FallbackAccountType(context); mAccountManager = AccountManager.get(mContext); mExecutor = ContactsExecutors.getDefaultThreadPoolExecutor(); mMainThreadExecutor = ContactsExecutors.newHandlerExecutor(mMainThreadHandler); // Request updates when packages or accounts change IntentFilter filter = new IntentFilter(Intent.ACTION_PACKAGE_ADDED); filter.addAction(Intent.ACTION_PACKAGE_REMOVED); filter.addAction(Intent.ACTION_PACKAGE_CHANGED); filter.addDataScheme("package"); mContext.registerReceiver(mBroadcastReceiver, filter); IntentFilter sdFilter = new IntentFilter(); sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_AVAILABLE); sdFilter.addAction(Intent.ACTION_EXTERNAL_APPLICATIONS_UNAVAILABLE); mContext.registerReceiver(mBroadcastReceiver, sdFilter); // Request updates when locale is changed so that the order of each field will // be able to be changed on the locale change. filter = new IntentFilter(Intent.ACTION_LOCALE_CHANGED); mContext.registerReceiver(mBroadcastReceiver, filter); mAccountManager.addOnAccountsUpdatedListener(this, mMainThreadHandler, false); ContentResolver.addStatusChangeListener(ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, this); if (Flags.getInstance().getBoolean(Experiments.CP2_DEVICE_ACCOUNT_DETECTION_ENABLED)) { // Observe changes to RAW_CONTACTS so that we will update the list of "Device" accounts // if a new device contact is added. mContext.getContentResolver().registerContentObserver(ContactsContract.RawContacts.CONTENT_URI, /* notifyDescendents */ true, new ContentObserver(mMainThreadHandler) { @Override public boolean deliverSelfNotifications() { return true; } @Override public void onChange(boolean selfChange) { reloadLocalAccounts(); } @Override public void onChange(boolean selfChange, Uri uri) { reloadLocalAccounts(); } }); } loadAccountTypes(); }
From source file:com.android.exchange.SyncManager.java
public void run() { sStop = false;//from www. jav a 2 s .c o m alwaysLog("!!! SyncManager thread running"); // If we're really debugging, turn on all logging if (Eas.DEBUG) { Eas.USER_LOG = true; Eas.PARSER_LOG = true; Eas.FILE_LOG = true; } // If we need to wait for the debugger, do so if (Eas.WAIT_DEBUG) { Debug.waitForDebugger(); } // Synchronize here to prevent a shutdown from happening while we initialize our observers // and receivers synchronized (sSyncLock) { if (INSTANCE != null) { mResolver = getContentResolver(); // Set up our observers; we need them to know when to start/stop various syncs based // on the insert/delete/update of mailboxes and accounts // We also observe synced messages to trigger upsyncs at the appropriate time mAccountObserver = new AccountObserver(mHandler); mResolver.registerContentObserver(Account.CONTENT_URI, true, mAccountObserver); mMailboxObserver = new MailboxObserver(mHandler); mResolver.registerContentObserver(Mailbox.CONTENT_URI, false, mMailboxObserver); mSyncedMessageObserver = new SyncedMessageObserver(mHandler); mResolver.registerContentObserver(Message.SYNCED_CONTENT_URI, true, mSyncedMessageObserver); mMessageObserver = new MessageObserver(mHandler); mResolver.registerContentObserver(Message.CONTENT_URI, true, mMessageObserver); mSyncStatusObserver = new EasSyncStatusObserver(); mStatusChangeListener = ContentResolver .addStatusChangeListener(ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, mSyncStatusObserver); // Set up our observer for AccountManager mAccountsUpdatedListener = new EasAccountsUpdatedListener(); AccountManager.get(getApplication()).addOnAccountsUpdatedListener(mAccountsUpdatedListener, mHandler, true); // Set up receivers for connectivity and background data setting mConnectivityReceiver = new ConnectivityReceiver(); registerReceiver(mConnectivityReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); mBackgroundDataSettingReceiver = new ConnectivityReceiver(); registerReceiver(mBackgroundDataSettingReceiver, new IntentFilter(ConnectivityManager.ACTION_BACKGROUND_DATA_SETTING_CHANGED)); // Save away the current background data setting; we'll keep track of it with the // receiver we just registered ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); mBackgroundData = cm.getBackgroundDataSetting(); // See if any settings have changed while we weren't running... checkPIMSyncSettings(); } } try { // Loop indefinitely until we're shut down while (!sStop) { runAwake(SYNC_MANAGER_ID); waitForConnectivity(); mNextWaitReason = "Heartbeat"; long nextWait = checkMailboxes(); try { synchronized (this) { if (!mKicked) { if (nextWait < 0) { log("Negative wait? Setting to 1s"); nextWait = 1 * SECONDS; } if (nextWait > 10 * SECONDS) { log("Next awake in " + nextWait / 1000 + "s: " + mNextWaitReason); runAsleep(SYNC_MANAGER_ID, nextWait + (3 * SECONDS)); } wait(nextWait); } } } catch (InterruptedException e) { // Needs to be caught, but causes no problem log("SyncManager interrupted"); } finally { synchronized (this) { if (mKicked) { //log("Wait deferred due to kick"); mKicked = false; } } } } log("Shutdown requested"); } catch (RuntimeException e) { Log.e(TAG, "RuntimeException in SyncManager", e); throw e; } finally { shutdown(); } }
From source file:com.mwebster.exchange.SyncManager.java
public void run() { mStop = false;/* ww w .j ava2s. c o m*/ // If we're really debugging, turn on all logging if (Eas.DEBUG) { Eas.USER_LOG = true; Eas.PARSER_LOG = true; Eas.FILE_LOG = true; } // If we need to wait for the debugger, do so if (Eas.WAIT_DEBUG) { Debug.waitForDebugger(); } // Set up our observers; we need them to know when to start/stop various syncs based // on the insert/delete/update of mailboxes and accounts // We also observe synced messages to trigger upsyncs at the appropriate time mResolver.registerContentObserver(Mailbox.CONTENT_URI, false, mMailboxObserver); mResolver.registerContentObserver(Message.SYNCED_CONTENT_URI, true, mSyncedMessageObserver); mResolver.registerContentObserver(Message.CONTENT_URI, true, mMessageObserver); ContentResolver.addStatusChangeListener(ContentResolver.SYNC_OBSERVER_TYPE_SETTINGS, mSyncStatusObserver); mAccountsUpdatedListener = new EasAccountsUpdatedListener(); // TODO Find and fix root cause of duplication try { AccountManager.get(getApplication()).addOnAccountsUpdatedListener(mAccountsUpdatedListener, mHandler, true); } catch (IllegalStateException e1) { // This exception is more of a warning; we shouldn't be in the state in which we // already have a listener. } // Set up receivers for ConnectivityManager mConnectivityReceiver = new ConnectivityReceiver(); registerReceiver(mConnectivityReceiver, new IntentFilter(ConnectivityManager.CONNECTIVITY_ACTION)); mBackgroundDataSettingReceiver = new ConnectivityReceiver(); registerReceiver(mBackgroundDataSettingReceiver, new IntentFilter(ConnectivityManager.ACTION_BACKGROUND_DATA_SETTING_CHANGED)); // Save away background data setting; we'll keep track of it with the receiver ConnectivityManager cm = (ConnectivityManager) getSystemService(Context.CONNECTIVITY_SERVICE); mBackgroundData = cm.getBackgroundDataSetting(); // See if any settings have changed while we weren't running... checkPIMSyncSettings(); try { while (!mStop) { runAwake(SYNC_MANAGER_ID); waitForConnectivity(); mNextWaitReason = "Heartbeat"; long nextWait = checkMailboxes(); try { synchronized (this) { if (!mKicked) { if (nextWait < 0) { log("Negative wait? Setting to 1s"); nextWait = 1 * SECONDS; } if (nextWait > 10 * SECONDS) { log("Next awake in " + nextWait / 1000 + "s: " + mNextWaitReason); runAsleep(SYNC_MANAGER_ID, nextWait + (3 * SECONDS)); } wait(nextWait); } } } catch (InterruptedException e) { // Needs to be caught, but causes no problem } finally { synchronized (this) { if (mKicked) { //log("Wait deferred due to kick"); mKicked = false; } } } } log("Shutdown requested"); } catch (RuntimeException e) { Log.e(TAG, "RuntimeException in SyncManager", e); throw e; } finally { log("Finishing SyncManager"); // Lots of cleanup here // Stop our running syncs stopServiceThreads(); // Stop receivers and content observers if (mConnectivityReceiver != null) { unregisterReceiver(mConnectivityReceiver); } if (mBackgroundDataSettingReceiver != null) { unregisterReceiver(mBackgroundDataSettingReceiver); } if (INSTANCE != null) { ContentResolver resolver = getContentResolver(); resolver.unregisterContentObserver(mAccountObserver); resolver.unregisterContentObserver(mMailboxObserver); resolver.unregisterContentObserver(mSyncedMessageObserver); resolver.unregisterContentObserver(mMessageObserver); unregisterCalendarObservers(); } // Don't leak the Intent associated with this listener if (mAccountsUpdatedListener != null) { AccountManager.get(this).removeOnAccountsUpdatedListener(mAccountsUpdatedListener); mAccountsUpdatedListener = null; } // Clear pending alarms and associated Intents clearAlarms(); // Release our wake lock, if we have one synchronized (mWakeLocks) { if (mWakeLock != null) { mWakeLock.release(); mWakeLock = null; } } log("Goodbye"); } if (!mStop) { // If this wasn't intentional, try to restart the service throw new RuntimeException("EAS SyncManager crash; please restart me..."); } }