用户从设置中删除Android身份验证器帐户时自动注销

时间:2014-05-06 10:24:51

标签: android authentication android-authenticator

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

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

我曾想过在每个活动中覆盖 onResume 方法(或从新的Activity类扩展)并向Authenticator提出 getAuthTokenByFeatures ,因此当应用程序恢复时如果帐户被删除,它会要求用户登录。然而,我是Android的新手,并且不知道这是否是一个好方法。

1 个答案:

答案 0 :(得分: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);