android - 将 SMS Retriever API 与即时应用程序一起使用
问题描述
我有一个正常运行的即时应用程序,并且我已经成功地将 SMS Retriever API 合并到多个应用程序中,但两者似乎不能一起运行。有没有办法让它们一起发挥作用,或者是否存在不支持的文档?
public class SmsClient {
private SmsReceiver smsReceiver;
public interface GoogleTaskListener extends OnSuccessListener<Void>, OnFailureListener {
}
public SmsClient(@NonNull VerificationCodeListener verificationCodeListener,
int codeLength) {
this.smsReceiver = new SmsReceiver(verificationCodeListener, codeLength);
}
public void attach(Context context) {
SmsRetrieverClient client = SmsRetriever.getClient(context);
Task<Void> startSmsReceiverTask = client.startSmsRetriever();
GoogleTaskListener googleTaskListener = new GoogleTaskListener() {
@Override
public void onSuccess(Void v) {
Timber.i("Sms task succeeded!");
}
@Override
public void onFailure(@NonNull Exception e) {
Timber.e("Sms task failed."); //Message "17: API: SmsRetriever.API is not available on this device."
}
};
startSmsReceiverTask.addOnSuccessListener(googleTaskListener);
startSmsReceiverTask.addOnFailureListener(googleTaskListener);
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction(SmsRetriever.SMS_RETRIEVED_ACTION);
context.registerReceiver(smsReceiver, intentFilter);
}
public void detach(Context context) {
context.unregisterReceiver(smsReceiver);
}
}
在常规应用程序中使用 startSmsRetriever() 启动 SMS Retriever 时,会调用 onSuccess。
当尝试在作为即时应用程序运行的同一应用程序中启动 SMS Retriever 时,会调用 onFailure 并显示错误消息17:API:SmsRetriever.API 在此设备上不可用。
最终,我们希望通过 SMS 发送的一次性密码由正在运行的即时应用程序自动处理以验证会话。有关该主题的任何信息都会有所帮助。
我目前正在 Pixel 3 (API 28) 模拟器中运行它。
解决方案
正如 TWL 评论的那样,它确实有效。它只是在模拟器中不起作用。
推荐阅读
- php - 警告:mysqli_connect(): (HY000/1045): Access denied for user 'record'@'localhost' (使用密码: YES)
- jquery - 从 json 对象中分离一些值(react,jquery)
- swift - 在范围内找不到类型“MessagingRemoteMessage”
- java - 使用 Spring Boot 解析模板时出错
- reactjs - 传递外部库中的组件函数
- mysql - SQLSTATE[HY000]: 一般错误: 1005 Can't create table `test`.`members` (errno: 150 "Foreign key constraint is wrongly forms")
- android - 使用 SmsRetriever 时接收广播 Intent 时出错
- asynchronous - MQTT 在 Nest.js 传输中发送对象而不是字符串
- android - 我想在我的 Flutter 应用程序中显示带有背景颜色的状态栏
- asp.net-mvc - 如何在多个服务器 IIS 上发布应用程序的更新