首页 > 解决方案 > 谷歌智能锁在一个应用程序中显示我所有的手机账户,而不是以前使用的那些

问题描述

我正在开发一个应用程序并实现了智能锁。

问题是,起初,我的手机中有几个谷歌帐户,当我按下登录时,出现一个智能锁模式,说..继续..然后出现我所有帐户的列表(即使我没有使用那些我的应用程序或任何其他应用程序中的帐户,例如我有一个专门用于谷歌日历的帐户,它显示)最后我没有按上述任何一个。然后我输入凭据并正确保存。

之后,一切都按预期工作,这意味着在关闭应用程序并重新打开后,智能锁正确地自动完成凭据并且我正确输入。

我想知道我错过了什么,如果我进入发现他们只是显示我以前登录的帐户,而不是全部。

我发现了一些额外的信息,但显然没有有效的答案。

Smart Lock 多帐户分辨率始终显示

Smart Lock 显示不是来自我的应用的帐户

以防万一问题不清楚.. 如何过滤我的域或应用程序中以前使用的帐户?或者如何取出该模式(现在它就像自动填充器一样,以防任何显示的电子邮件与您正在寻找的电子邮件匹配。

标签: androidgoogle-smartlockpasswordsandroid-autofill-manager

解决方案


自问题发布以来已经有很长时间了,但为了记录,我还是会回答它。

当您请求凭据但用户之前没有保存任何凭据时,您将收到类型ResolvableApiException和状态代码SIGN_IN_REQUIRED的错误。如果您尝试通过调用来解决它startResolutionForResult(),Google SDK 将显示一个对话框,其中包含一些不包含密码的不相关帐户。这与使用提示选择器功能时出现的对话框相同。从文档中看不是很明显,但这是我在手动测试后看到的。

为避免这种情况,您必须在请求解决之前检查错误代码是否正是RESOLUTION_REQUIRED 。

client.request(credentialRequest)
  .addOnSuccessListener { response ->
    // ...
  }
  .addOnFailureListener { exception ->
    if (exception is ResolvableApiException && exception.statusCode == RESOLUTION_REQUIRED) {
      exception.startResolutionForResult(activity, REQUEST_CODE)
    }

推荐阅读