SMS Retriever API not calling SMS_RETRIEVED_ACTION from Firebase Phone Auth

走远了吗. 提交于 2019-12-07 19:59:25

问题


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

and I am trying to retrieve SMS using the SMS Retriever 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) {

            }
        });

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;
        }
    }
}
}

Could be Firebase SMS format? Could be not compatible with that?

Thanks in advance.


回答1:


Use below dependency and try again

compile 'com.google.android.gms:play-services-auth-api-phone:11.0.4'




回答2:


Please update the dependency to:
implementation "com.google.android.gms:play-services-auth-api-phone:16.0.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>

thats it!!.



来源:https://stackoverflow.com/questions/45670263/sms-retriever-api-not-calling-sms-retrieved-action-from-firebase-phone-auth

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!