SmsRetrieverClient

public abstract class SmsRetrieverClient extends GoogleApi implements SmsRetrieverApi


The main entry point for interacting with SmsRetriever.

This does not require a GoogleApiClient. See GoogleApi for more information.

Summary

Public methods

abstract Task<Void>

Starts SmsRetriever, which waits for a matching SMS message until timeout (5 minutes).

abstract Task<Void>

Starts SmsUserConsent, which waits for an OTP-containing SMS message until timeout (5 minutes).

Inherited methods

From com.google.android.gms.common.api.GoogleApi
GoogleApiClient
Api.Client
buildApiClient(
    Looper looper,
    GoogleApiManager.ClientConnection<O> clientConnection
)
ClientSettings.Builder
SignInCoordinator
Task<Boolean>
T
<A extends Api.AnyClient, T extends BaseImplementation.ApiMethodImpl<Result, A>> doBestEffortWrite(
    T methodImpl
)
Task<TResult>
<TResult, A extends Api.AnyClient> doBestEffortWrite(
    TaskApiCall<A, TResult> methodImpl
)
T
<A extends Api.AnyClient, T extends BaseImplementation.ApiMethodImpl<Result, A>> doRead(
    T methodImpl
)
Task<TResult>
<TResult, A extends Api.AnyClient> doRead(TaskApiCall<A, TResult> methodImpl)
Task<Void>
<A extends Api.AnyClient, T extends RegisterListenerMethod<A, Object>, U extends UnregisterListenerMethod<A, Object>> doRegisterEventListener(
    T registerMethod,
    U unregisterMethod
)

This method is deprecated.

Task<Boolean>
T
<A extends Api.AnyClient, T extends BaseImplementation.ApiMethodImpl<Result, A>> doWrite(
    T methodImpl
)
Task<TResult>
<TResult, A extends Api.AnyClient> doWrite(TaskApiCall<A, TResult> methodImpl)
Api<O>
String
ApiKey<O>
O
Context
String
String

This method is deprecated.

int
Looper
ListenerHolder<L>
<L> registerListener(L listener, String listenerType)

Public methods

startSmsRetriever

public abstract Task<VoidstartSmsRetriever()

Starts SmsRetriever, which waits for a matching SMS message until timeout (5 minutes). The matching SMS message will be sent via a Broadcast Intent with action SMS_RETRIEVED_ACTION. The Intent contains Extras with keys EXTRA_SMS_MESSAGE for the retrieved SMS message as a String, and EXTRA_STATUS for Status to indicate SUCCESS, DEVELOPER_ERROR, ERROR, or TIMEOUT.

Note: Add SEND_PERMISSION in registerReceiver while registering the receiver to detect that the broadcast intent is from the SMS Retriever. Be aware that this detection only works on devices using Google Play services v19.8.31 and later.

The possible causes for errors are:

  • DEVELOPER_ERROR: the caller app has incorrect number of certificates. Only one certificate is allowed.
  • ERROR: the AppCode collides with other installed apps.
Returns
Task<Void>

a Task for the call. Attach an OnCompleteListener and then check isSuccessful to determine if it was successful.

startSmsUserConsent

public abstract Task<VoidstartSmsUserConsent(@Nullable String senderAddress)

Starts SmsUserConsent, which waits for an OTP-containing SMS message until timeout (5 minutes). OTP-containing SMS message can be retrieved with two steps.

Note: Add SEND_PERMISSION in registerReceiver while registering the receiver to detect that the broadcast intent is from the SMS Retriever. Be aware that this detection only works on devices using Google Play services v19.8.31 and later.

  1. [Get consent Intent] While OTP-containing SMS message comes, a consent Intent will be sent via a Broadcast Intent with action SMS_RETRIEVED_ACTION. The Intent contains Extras with keys EXTRA_CONSENT_INTENT for the consent Intent and EXTRA_STATUS for Status to indicate SUCCESS or TIMEOUT.
  2. [Get OTP-containing SMS message] Calls startActivityForResult with consent Intent to launch a consent dialog to get user's approval, then the OTP-containing SMS message can be retrieved from the activity result.
Parameters
@Nullable String senderAddress

address of desired SMS sender, or null to retrieve any sender

Returns
Task<Void>

a Task for the call. Attach an OnCompleteListener and then check isSuccessful to determine if it was successful.