Sms Retriever API 不工作,因为从未调用自动捕获 OTP 的广播接收器

问题描述 投票:0回答:0

我正在尝试使用 google smsRetrieverAPI(文档 here)自动捕获 OTP,它从提供的消息文本中捕获 OTP,消息以 [#] 开头并以应用程序哈希字符串结尾,例如 NMjIX4ZCb0u

尽管发送了正确格式的消息模板,但清单中注册的广播接收器永远不会使用消息调用 onReceive,该消息可进一步用于使用任何 OTP 正则表达式获取 OTP。

我的代码如下

Android 清单

 <receiver
            android:name=".receiver.AutoReadSMSReceiver"
            android:exported="true">
            <intent-filter>
                <action android:name="com.google.android.gms.auth.api.phone.SMS_RETRIEVED" />
            </intent-filter>
        </receiver>

LoginFragment.kt

smsRetrieverClient?.startSmsRetriever()

AutoReadSMSReceiver

public class AutoReadSMSReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(@NonNull Context context, @Nullable Intent intent) {

        String message = null;
        Log.d("AutoReadSms", "onReceive: intent "+intent);
        if (null != intent && null != intent.getExtras() && SmsRetriever.SMS_RETRIEVED_ACTION.equals(intent.getAction())) {
            Bundle extras = intent.getExtras();
            Status status = (Status) extras.get(SmsRetriever.EXTRA_STATUS);
            if (null != status) {
                Toast.makeText(context,"status code "+status.getStatusCode(), Toast.LENGTH_SHORT).show();
                switch (status.getStatusCode()) {
                    case CommonStatusCodes.SUCCESS:
                        message = (String) extras.get(SmsRetriever.EXTRA_SMS_MESSAGE);
                        break;
                    case CommonStatusCodes.TIMEOUT:
                        break;
                }
            }
        }
        Intent smsintent = new Intent();
        smsintent.setAction(OTPHandlerFragment.AUTO_READ_SMS_COMMAND);
        smsintent.putExtra(OTPHandlerFragment.MESSAGE, message);
        context.sendBroadcast(smsintent);
    }
}

试过上面的东西但没有用。

broadcastreceiver listener sms-retriever-api
© www.soinside.com 2019 - 2024. All rights reserved.