【问题标题】:Automatically logout when user deletes Android Authenticator account from settings当用户从设置中删除 Android Authenticator 帐户时自动注销
【发布时间】:2014-06-22 21:54:06
【问题描述】:

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

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

我考虑过覆盖每个活动中的 onResume 方法(或从新的 Activity 类扩展)并使用 getAuthTokenByFeatures 询问 Authenticator,所以当应用程序恢复时如果帐户被删除,它将要求用户登录。但是我是 Android 新手,不知道这是否是一个好方法。

【问题讨论】:

    标签: android authentication android-authenticator


    【解决方案1】:

    好的,我在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);
    

    【讨论】:

    • 如果我理解正确,您必须将此侦听器添加到您应用的每个活动中,因为用户可能在您应用的任何其他活动中,而不仅仅是在主活动中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-06-30
    • 1970-01-01
    • 2022-01-21
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多