java - SmsRetrieverClient.startSmsUserConsent () 如何传递不同的发件人号码作为参数?

标签 java

SmsRetrieverClient.startSmsUserConsent(senderPhoneNumber/* 或 null */)

此 senderPhoneNumber 是我知道将从中接收 OTP 的号码。我的问题是,如果我传递 null,它可以按照文档所述从任何数字中提取 OTP(传递 null,以便它认为允许任何数字。)。我如何知道我的发件人是否正确?如果我收到两个 OTP 会怎样?

如果这是不可能的,我能否以某种方式传递两个我确信其中一个会发送我的 OTP 的发件人号码?

任何人对此有任何了解,请告知。

最佳答案

我做了我的研究并尽我最大的努力写下了我的答案。回答您的问题

  1. What happens if I receive two OTPs?

这个问题的答案是,在大多数情况下,您不会在 5 分钟内收到两条包含 OTP 的消息。

尽管让我们考虑更糟糕的情况。假设您连续收到 2 条包含 OTP 的短信,那么短信用户同意 API 将仅显示对第一条收到的短信的同意(假设您提到 null 作为发件人电话号码)。

所以基本上发生的情况是,一旦用户同意 API 检测到并显示同意,它就会停止监听短信。

  1. If this is not possible can I somehow pass two sender numbers that I am sure that either would be sending my OTP?

答案:是的,可以。如果您知道发件人可能的名称,即 AD-Something、BC-Something、CC-Something 那么您可以像这样一一注册所有 3 个的监听器

 val task1 = SmsRetriever.getClient(applicationContext).startSmsUserConsent("AD-Something")
 val task2 = SmsRetriever.getClient(applicationContext).startSmsUserConsent("CC-Something")
 val task3 = SmsRetriever.getClient(applicationContext).startSmsUserConsent("BC-Something")
     

一旦您这样声明,您的设备就会监听所有这些。确保您还检查这些回调以了解它们是否成功

How do I know these?

没有这方面的官方来源/文档。 (我查找了文档,但没有找到任何关于此的提及)然后我自己尝试并找到了它。

老实说,我感觉这个问题只是此时不成熟优化的另一个版本

谢谢。

关于java - SmsRetrieverClient.startSmsUserConsent () 如何传递不同的发件人号码作为参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64974549/

相关文章:

MacOS中某App的Java截图

java - 不兼容的类型 : inference variable T has incompatible bounds

Java import com.google.common.io.Files 无法解析

java - 根据出现次数获取子字符串,正则表达式java

java - android-numberpicker 可以实例化成View吗?

Java 构造函数初始化?

java - 将数字数组从 Java 发送到 Arduino

java - 在 Java 中使用 java.util.Scanner 时出现 InputMismatchException

java - Spring 事务 - 在 Sybase 过程中创建临时表时出现 Propagation.REQUIRED 问题

java - Spring Data JDBC 反转 OneToMany 导航