cheogram/src/quicksyPlaystore/java/eu/siacs/conversations/utils/SmsRetrieverWrapper.java
Daniel Gultsch 26a4598f3c automatically receive Quicksy SMS. fixes #3962
requires new version of QuicksyServer
2021-01-19 15:45:43 +01:00

40 lines
1.6 KiB
Java

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