android - 谷歌智能锁在一个应用程序中显示我所有的手机账户,而不是以前使用的那些
问题描述
我正在开发一个应用程序并实现了智能锁。
问题是,起初,我的手机中有几个谷歌帐户,当我按下登录时,出现一个智能锁模式,说..继续..然后出现我所有帐户的列表(即使我没有使用那些我的应用程序或任何其他应用程序中的帐户,例如我有一个专门用于谷歌日历的帐户,它显示)最后我没有按上述任何一个。然后我输入凭据并正确保存。
之后,一切都按预期工作,这意味着在关闭应用程序并重新打开后,智能锁正确地自动完成凭据并且我正确输入。
我想知道我错过了什么,如果我进入发现他们只是显示我以前登录的帐户,而不是全部。
我发现了一些额外的信息,但显然没有有效的答案。
以防万一问题不清楚.. 如何过滤我的域或应用程序中以前使用的帐户?或者如何取出该模式(现在它就像自动填充器一样,以防任何显示的电子邮件与您正在寻找的电子邮件匹配。
解决方案
自问题发布以来已经有很长时间了,但为了记录,我还是会回答它。
当您请求凭据但用户之前没有保存任何凭据时,您将收到类型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)
}
推荐阅读
- java - 为什么我的脚本语言解析器不工作?
- paperjs - paperjs:一次拖动两个项目而不改变它们的相对位置
- ios - 如何解决两个框架具有相同类错误的问题?
- ios - 如何在 Swift 4 中为 UISlider 轨道添加边框颜色?
- javascript - Angular:仅在 ng build --prod 上构建 ES2015
- google-apps-script - 如何使用 Google Apps 脚本在一列中对多列进行分组?
- jenkins - 如何删除 Jenkinsfile 中的文件夹?
- ios - 在 TextView 中渲染新行
- scala - cat.ReaderT[F,A,B] 来自依赖项 A 的理解
- jboss - wildfly.service 的作业失败,因为控制进程以错误代码退出