我开发了一个使用Android身份验证器API( AccountManager )的应用,因此我可以通过设置屏幕添加或删除帐户。
如果我从我的应用程序注销,我可以以编程方式删除该帐户并将用户返回到 AccountAuthenticatorActivity 。但是,如果用户从设置屏幕手动删除帐户,我希望我的应用程序(正在运行)检测到这种情况并在重新打开时自动注销。
我曾想过在每个活动中覆盖 onResume 方法(或从新的Activity类扩展)并向Authenticator提出 getAuthTokenByFeatures ,因此当应用程序恢复时如果帐户被删除,它会要求用户登录。然而,我是Android的新手,并且不知道这是否是一个好方法。
答案 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);