AccountManager未能在Sony XZ 7.1.1上添加帐户



我目前正在开发的应用程序最近显示了用户更新为7.1.1 om sony Mobiles

的问题

在索尼XZ上,我们可以在数目中看到这一点,试图在日志中添加添加:

AccountManagerService(1503(:insertaccountintodatabase:account {name = something@something.com,type = com.myapplication.go},由于帐户已经存在

而跳过

已安装了该应用程序,并在升级之前由我们的应用程序添加了帐户。似乎该帐户尚未完全删除/读取。

我们在应用程序中如何从中恢复?为什么会发生这种情况?我已经阅读了Nougat Preview中的类似问题,但是我们无法通过RemoveAccountSplocifical恢复,然后按照下面的链接中的建议再次添加它。结果与上述相同,并且该应用程序的卸载尚未清除帐户,并且电话也不重新启动。

AccountManager不在Android N Preview中添加自定义帐户

我们找到了问题的可能原因和解决方案。

症状

tl; dr 这是索尼的错。

从我们的用户群中,看起来只有Sony XZ用户在将设备升级到7.1.1之前使用了我们的应用程序。

我们到达了几个Sony XZ设备(并最终将它们返回商店(,将它们从Android 6.0升级到7.1.1,并试图重现该问题。但是没有运气。

但是,我们找到了使用Android模拟器达到相同"症状"的另一种方法。步骤是:

  1. 启动模拟器
  2. 登录到您的应用程序(以便将用户添加到帐户管理器中(
  3. 转到终端,进行以下

步骤:

adb shell
su
cd /data/system_de/0/
rm accounts_de.db
  1. 重新启动模拟器
  2. 从现在开始,您的问题是可重复的。

此外,如果您检查/data/system_ce/0/accounts_ce.db,您将看到这是一个数据库,它仍然包含您以前的用户。这很可能AccountManager不允许您再次插入同一用户。

在更新到Android 7.1.1时,Sony以某种方式损坏了包含原始帐户的accounts_de.db

解决方案

由于数据库中已经存在相同名称的帐户(而且您无法真正从那里删除它(,因此我们基本上无法再次使用相同的用户名插入用户。但是,我们可以使用略有更新的用户名插入帐户:

if (!accountManager.addAccountExplicitly(account, password, bundle)) {
    // We failed to add the account. Fallback to workaround.
    accountManager.addAccountExplicitly(
        new Account(username + "n", accountType), // this line solves the issue
        password,
        bundle
    );
}

由于此帐户现在与原始帐户不同(感谢n字符(,因此可以插入AccountManager数据库。

该问题是Google知道的:https://issuetracker.google.com/issues/142699760

最新更新