这个问题已经被问了很多次,但自从 GoogleApiClient
被弃用以来,所有解决方案现在似乎都已经过时了。
我想显示一个对话框,其中列出用户设备上存在的电话号码。另外,还有一个对话框显示与设备关联的所有电子邮件。
- 是否有不使用 GoogleApiClient 的解决方案? (现已弃用)
- 解决方案不应涉及任何可怕的权限(我不喜欢仅仅为了自动填充而请求权限)
- 该解决方案的典型成功率是多少?有哪些 Android 版本可用? OEM 厂商多久会搞砸它,导致它无法工作? (这发生在 GoogleApiClient 解决方案中)
- 一般来说,我不关心 firebase、Google 登录或任何与身份验证相关的内容。我只想要一个包含电话号码的弹出窗口和另一个包含电子邮件的弹出窗口,以便用户可以一次性选择它,然后我去进行自己的身份验证。 (似乎有些解决方案正在插入 GoogleSignIn,这甚至与问题无关)
例如,所有此类问题普遍接受的方法是以下方法:
val hintRequest = HintRequest.Builder()
.setPhoneNumberIdentifierSupported(true)
.build()
val intent = Auth.CredentialsApi.getHintPickerIntent(
googleApiClient, hintRequest
)
startIntentSenderForResult(
intent.intentSender,
123, null, 0, 0, 0, null
)
但是,这不再有效。一个对话框闪烁并消失,我在 onActivityResult 中返回 Activity.RESULT_CANCELLED (0) 结果代码。那么,这个功能要么被游戏服务随机停止,要么由 OEM 实现不可靠,或者是否有一种新的未弃用的方法来执行此操作?
让我们停止这里的困惑。您知道实现此目标的可靠方法吗?
最佳答案
帖子中提到了一些问题,我会一一解决。
是否有不使用 GoogleApiClient 的解决方案? -> 我们正在研究一种新的解决方案,但它与我们目前提供的略有不同。新的解决方案允许用户选择 Google 帐户进行登录。电话号码功能还没有到位,稍后我会讲到。新的 API 将于第一季度末/第二季度初推出。
我同意你关于账户的观点。但是,为了获取电话号码,应用程序需要持有电话号码相关权限(有关详细信息,请参阅 Android 权限文档),或者我们需要加强同意/数据源。我们不打算更改当前解决方案。确实,目前权限是混合的,即如果应用程序仅请求电子邮件,则需要电话号码权限 - 预计它会在我们的新 API 中得到修复。
当前解决方案适用于所有设备。这也是对您下面的问题的回应:是的,当没有数据可供用户选择时,当前的实现可能会出现闪烁问题。我们将改进 API,以便应用程序在没有数据时不需要启动 Intent。对于成功率,如果您使用新的 API,您应该能够在您的应用内衡量成功率,因为 Google API 的行为不再那么不透明。
Google 登录目前不提供电话号码功能,我们即将发布的新 API 也不提供。不过,团队正在考虑在我们的新 API 中构建电话号码功能。需要明确的是:我们正在考虑的新电话号码功能是由 Google 帐户支持的经过验证的电话号码,而不是电话号码自动填充。我们希望听到您对此的一些反馈:)
关于java - 如何使用 play-services-* 依赖项显示电话号码和电子邮件选择器对话框?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60211231/