Автоматическое чтение 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>