检测到Android帐户的删除

时间:2014-09-10 19:55:01

标签: android android-contentprovider accountmanager

我正在开发一个包含帐户,同步和内容提供商的Android应用程序。添加帐户有效,同步也会在内容提供商中保存一些数据。

现在,当用户使用设置删除帐户时,同步会停止,但数据会保留在内容提供商中。

我想删除它,但我不知道如何捕获帐户删除事件。

AccountManager.addOnAccountsUpdatedListener(),我已尝试将其添加到同步服务,但同步服务仅针对同步启动,然后停止。因此,无论何时在没有同步的情况下删除帐户,都无法捕获。

是否有关于如何在删除帐户时处理私人数据的最佳做法?

1 个答案:

答案 0 :(得分:4)

首先,您应该使用以下命令将OnAccountsUpdateListener添加到AccountManager:

AccountManager mAccountMgr = AccountManager.get(getContext());
mAccountMgr.addOnAccountsUpdatedListener(new AccountsUpdateListener(), null, false);

AccountsUpdateListener是OnAccountsUpdateListener的实现类,如下所示:

private class AccountsUpdateListener implements OnAccountsUpdateListener {
    @Override
    public void onAccountsUpdated(Account[] accounts) {
        Account newAccount = null;
        for (final Account account : accounts) {
            if (account.type.equals(mAccountType)) {
                newAccount = account;
            }
        }

        if (newAccount == null) {
          // account removed, now you can handle your private data and remove anything you want here
        }
    }
}
添加帐户或删除帐户时,

onAccountsUpdated已触发。这样您就可以检查您的帐户类型以查找帐户数组中的指定帐户。如果它不存在就删除了! mAccountType是您的帐户类型。例如mAccountType =“您的应用程序名称”