SMS检索API不从Firebase电话验证调用SMS_RETRIEVED_ACTION [英] SMS Retriever API not calling SMS_RETRIEVED_ACTION from Firebase Phone Auth
问题描述
SmsRetriever.SMS_RETRIEVED_ACTION没有被调用.我正在使用Firebase电话验证:
SmsRetriever.SMS_RETRIEVED_ACTION is not been called. I am using Firebase Phone Auth:
PhoneAuthProvider.getInstance().verifyPhoneNumber(
mPhoneNumber, // Phone number to verify
60, // Timeout duration
TimeUnit.SECONDS, // Unit of timeout
activity, // Activity (for callback binding)
mCallbacks); // OnVerificationStateChangedCallbacks
,而我正尝试使用 SMS检索器API
SmsRetrieverClient client = SmsRetriever.getClient(activity);
// Starts SmsRetriever, which waits for ONE matching SMS message until timeout
// (5 minutes). The matching SMS message will be sent via a Broadcast Intent with
// action SmsRetriever#SMS_RETRIEVED_ACTION.
Task<Void> task = client.startSmsRetriever();
task.addOnSuccessListener(new OnSuccessListener<Void>() {
@Override
public void onSuccess(Void aVoid) {
}
});
task.addOnFailureListener(new OnFailureListener() {
@Override
public void onFailure(@NonNull Exception e) {
}
});
我正在onResume上注册BroadcastReceiver并在暂停时取消注册:
I am registering BroadcastReceiver onResume and unregistering it on Pause:
public class MySMSBroadcastReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) {
Bundle extras = intent.getExtras();
Status status = (Status) extras.get(SmsRetriever.EXTRA_STATUS);
switch(status.getStatusCode()) {
case CommonStatusCodes.SUCCESS:
// Get SMS message contents
String message = (String) extras.get(SmsRetriever.EXTRA_SMS_MESSAGE);
break;
case CommonStatusCodes.TIMEOUT:
break;
}
}
}
}
可以是Firebase SMS格式吗?可能与此不兼容吗?
Could be Firebase SMS format? Could be not compatible with that?
谢谢.
推荐答案
请将依赖项更新为:
implementation "com.google.android.gms:play-services-auth-api-phone:17.4.0"
在 AndroidMaifest.xml 中注册您的广播接收器:
Please update the dependency to:
implementation "com.google.android.gms:play-services-auth-api-phone:17.4.0"
Register your broadcast receiver in AndroidMaifest.xml:
<receiver android:name=".MySMSBroadcastReceiver">
<intent-filter>
<action android:name="com.google.android.gms.auth.api.phone.SMS_RETRIEVED"/>
</intent-filter>
</receiver>
就这样!!
这篇关于SMS检索API不从Firebase电话验证调用SMS_RETRIEVED_ACTION的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!