API SMS Retriever не работает после загрузки в игровой магазин - PullRequest
0 голосов
/ 11 июля 2019

Автоматическое чтение SMS не работает после выпуска, в то время как оно работает нормально, когда я проверил в режиме выпуска с системой.В начале это работало, но сейчас дни не работает.Я не могу найти решение, потому что я не знаю проблему. Я реализовал это до 3 месяцев.

Я следовал https://developers.google.com/identity/sms-retriever/request

private void startSMSListener() {
    try {
        SmsRetrieverClient client = SmsRetriever.getClient(this);
        Task<Void> task = client.startSmsRetriever();
        task.addOnSuccessListener(new OnSuccessListener<Void>() {
            @Override
            public void onSuccess(Void aVoid) {
                // API successfully started
                AppLogs.showSOUT("Successfully started");
            }
        });

        task.addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                // Fail to start API
                AppLogs.showSOUT("Failed started");
            }
        });
    } catch (Exception e) {
        e.printStackTrace();
    }
}

public class SMSReceiver extends BroadcastReceiver {

    private OTPReceiveListener otpListener;

    /**
      * @param otpListener
      */
    public void setOTPListener(OTPReceiveListener otpListener) {
        this.otpListener = otpListener;
    }

    /**
      * @param context
      * @param intent
      */
    @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);
            AppLogs.showLogD("Status: ", status.toString());
            switch (status.getStatusCode()) {
                case CommonStatusCodes.SUCCESS:

                    //This is the full message
                    String message = (String) extras.get(SmsRetriever.EXTRA_SMS_MESSAGE);
                    String[] bhejonaOTP = message.split(":",5);
                //     AppLogs.showSOUT("OTP", bhejonaOTP[0]);
                //     AppLogs.showSOUT("OTP", bhejonaOTP[1].substring(1,5));
                //     AppLogs.showSOUT("OTP", message);
                  /*   <#> Your ExampleApp code is: 123ABC78
                    FA+9qCX9VSu*/

                    //Extract the OTP code and send to the listener

                    if (otpListener != null) {
              //          AppLogs.showSOUT("OTP: ", bhejonaOTP[1].substring(1,5));
                        otpListener.onOTPReceived(bhejonaOTP[1].substring(1,5));
                    }
                    break;
                case CommonStatusCodes.TIMEOUT:
                    // Waiting for SMS timed out (5 minutes)
                    if (otpListener != null) {
                        otpListener.onOTPTimeOut();
                    }
                    break;

                case CommonStatusCodes.API_NOT_CONNECTED:

                    if (otpListener != null) {
                        otpListener.onOTPReceivedError("API NOT CONNECTED");
                    }

                    break;

                case CommonStatusCodes.NETWORK_ERROR:

                    if (otpListener != null) {
                        otpListener.onOTPReceivedError("NETWORK ERROR");
                    }

                    break;

                case CommonStatusCodes.ERROR:

                    if (otpListener != null) {
                        otpListener.onOTPReceivedError("SOME THING WENT WRONG");
                    }

                    break;

            }
        }
    }

    /**
      *
      */
    public interface OTPReceiveListener {

        void onOTPReceived(String otp);

        void onOTPTimeOut();

        void onOTPReceivedError(String error);
    }
}

    <receiver
            android:name=".view.module.authentication.verify.sms.SMSReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.android.gms.auth.api.phone.SMS_RETRIEVED" />
            </intent-filter>
        </receiver>
...