2

我开发了一个使用 Android Authenticator API ( AccountManager ) 的应用程序,因此我可以通过设置屏幕添加或删除帐户。

如果我从我的应用程序中注销,我可以以编程方式删除帐户并将用户返回到AccountAuthenticatorActivity。但是,如果用户从设置屏幕手动删除帐户,我希望我的应用程序(正在运行)检测到这种情况并在重新打开时自动注销。

我曾考虑在每个活动中覆盖onResume方法(或从新的活动类扩展)并使用getAuthTokenByFeatures询问身份验证器,因此当应用程序恢复时,如果帐户被删除,它会要求用户登录。然而,我是 Android 新手,不知道这是否是一个好方法。

4

1 回答 1

2

好的,我在AccountManager类中发现了addOnAccountsUpdatedListener方法。

使用它,我回答我自己的问题。在我的应用程序主要活动的 onCreate 方法中:

    accountsListener = new OnAccountsUpdateListener() {
        @Override
        public void onAccountsUpdated(Account[] accounts) {
            Account[] myAccounts = mAccountManager.getAccountsByType(AccountGeneral.ACCOUNT_TYPE);
            if (myAccounts.length == 0) {
                // The account has been deleted
                Intent i = new Intent(mContext, PromptLoginActivity.class);
                startActivity(i);
                finish();
            }
            return;
        }
    };

    mAccountManager.addOnAccountsUpdatedListener(accountsListener, null, true);
于 2014-05-08T09:08:18.577 回答