Android 在其onReceive中调用侦听器的广播接收器。所以,基本上是一样的。当设备中的任何帐户(Google帐户、Twitter帐户等)发生更改时,都会通知这两种解决方案。 @Override public void onAccountsUpdated(fina

Android 在其onReceive中调用侦听器的广播接收器。所以,基本上是一样的。当设备中的任何帐户(Google帐户、Twitter帐户等)发生更改时,都会通知这两种解决方案。 @Override public void onAccountsUpdated(fina,android,accountmanager,android-syncadapter,Android,Accountmanager,Android Syncadapter,在其onReceive中调用侦听器的广播接收器。所以,基本上是一样的。当设备中的任何帐户(Google帐户、Twitter帐户等)发生更改时,都会通知这两种解决方案。 @Override public void onAccountsUpdated(final Account[] accounts) { Ln.i("Accounts updated."); final Iterable<String> account_list = new Iterable<Str

在其
onReceive
中调用侦听器的广播接收器。所以,基本上是一样的。当设备中的任何帐户(Google帐户、Twitter帐户等)发生更改时,都会通知这两种解决方案。
@Override
public void onAccountsUpdated(final Account[] accounts) {
    Ln.i("Accounts updated.");
    final Iterable<String> account_list = new Iterable<String>() {
        @Override
        public Iterator<String> iterator() {
            return new Iterator<String>() {
                private final Iterator<Account> account_list = Arrays.asList(accounts).iterator();

                @Override
                public boolean hasNext() {
                    return account_list.hasNext();
                }

                /** Extracts the next account name and wraps it in single quotes. */
                @Override
                public String next() {
                    return "'" + account_list.next().name + "'";
                }

                @Override
                public void remove() { throw new UnsupportedOperationException("Not implemented"); }
            };
        }
    };
    final String account_set = TextUtils.join(", ", account_list);
    Ln.i("Current accounts: %s", account_set);

    // Removes content that is associated with accounts that are not currently connected
    final SelectionBuilder builder = new SelectionBuilder();
    builder.table(Tables.CALENDARS)
           .where(Calendars.CALENDAR_USER + " NOT IN (?)", account_set);

    new SafeAsyncTask() {
        @Override
        public Void call() throws Exception {
            _model.openWritableDatabase();
            _model.delete(builder);
            return null;
        }
    }.execute();


    getContext().getContentResolver().notifyChange(Calendars.NO_SYNC_URI, null, false);
}
AbstractAccountAuthenticator.getAccountRemovalAllowed(AccountAuthenticatorResponse, Account) 
return super.getAccountRemovalAllowed(response, account); // returns Bundle[{booleanResult=true}]