diff options
author | Daniel Gultsch <daniel@gultsch.de> | 2021-01-19 17:45:41 +0300 |
---|---|---|
committer | Daniel Gultsch <daniel@gultsch.de> | 2021-01-19 17:45:43 +0300 |
commit | 26a4598f3c4a76baef69ae509dd2e77b8d5c25b7 (patch) | |
tree | 1dda075710f875231540011951f099d39940ac9f /src/quicksyPlaystore/java | |
parent | 624bb565a87b68ab9a94edfc7afbe19138f88074 (diff) |
automatically receive Quicksy SMS. fixes #3962
requires new version of QuicksyServer
Diffstat (limited to 'src/quicksyPlaystore/java')
-rw-r--r-- | src/quicksyPlaystore/java/eu/siacs/conversations/utils/SmsRetrieverWrapper.java | 40 |
1 files changed, 40 insertions, 0 deletions
diff --git a/src/quicksyPlaystore/java/eu/siacs/conversations/utils/SmsRetrieverWrapper.java b/src/quicksyPlaystore/java/eu/siacs/conversations/utils/SmsRetrieverWrapper.java new file mode 100644 index 000000000..3aa38ab5f --- /dev/null +++ b/src/quicksyPlaystore/java/eu/siacs/conversations/utils/SmsRetrieverWrapper.java @@ -0,0 +1,40 @@ +package eu.siacs.conversations.utils; + +import android.content.Context; +import android.os.Bundle; +import android.util.Log; + +import com.google.android.gms.auth.api.phone.SmsRetriever; +import com.google.android.gms.auth.api.phone.SmsRetrieverClient; +import com.google.android.gms.common.api.CommonStatusCodes; +import com.google.android.gms.common.api.Status; +import com.google.android.gms.tasks.Task; +import com.google.common.base.Strings; + +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import eu.siacs.conversations.Config; + +public class SmsRetrieverWrapper { + + public static void start(final Context context) { + final SmsRetrieverClient client = SmsRetriever.getClient(context); + final Task<Void> task = client.startSmsRetriever(); + task.addOnSuccessListener(aVoid -> Log.d(Config.LOGTAG, "successfully started SMS retriever")); + task.addOnFailureListener(e -> Log.d(Config.LOGTAG, "unable to start SMS retriever", e)); + } + + public static String extractPin(Bundle extras) { + final Status status = extras == null ? null : (Status) extras.get(SmsRetriever.EXTRA_STATUS); + if (status != null && status.getStatusCode() == CommonStatusCodes.SUCCESS) { + Log.d(Config.LOGTAG, "Verification SMS received with status success"); + final String message = extras.getString(SmsRetriever.EXTRA_SMS_MESSAGE); + final Matcher m = Pattern.compile("(?<!\\d)\\d{6}(?!\\d)").matcher(Strings.nullToEmpty(message)); + if (m.find()) { + return m.group(); + } + } + return null; + } +}
\ No newline at end of file |