在即时应用程序中使用SMS检索器API

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

我有一个运行中的即时应用程序,并且我已经成功地将SMS Retriever API整合到了多个应用程序中,但是这两个应用程序似乎无法一起使用。有没有办法使它们一起运行,或者是否存在有关此文件不受支持的文档?

public class SmsClient {

    private SmsReceiver smsReceiver;

    public interface GoogleTaskListener extends OnSuccessListener<Void>, OnFailureListener {
    }

    public SmsClient(@NonNull VerificationCodeListener verificationCodeListener,
                     int codeLength) {
        this.smsReceiver = new SmsReceiver(verificationCodeListener, codeLength);
    }

    public void attach(Context context) {
        SmsRetrieverClient client = SmsRetriever.getClient(context);
        Task<Void> startSmsReceiverTask = client.startSmsRetriever();

        GoogleTaskListener googleTaskListener = new GoogleTaskListener() {
            @Override
            public void onSuccess(Void v) {
                Timber.i("Sms task succeeded!");
            }

            @Override
            public void onFailure(@NonNull Exception e) {
                Timber.e("Sms task failed."); //Message "17: API: SmsRetriever.API is not available on this device."
            }
        };

        startSmsReceiverTask.addOnSuccessListener(googleTaskListener);
        startSmsReceiverTask.addOnFailureListener(googleTaskListener);

        IntentFilter intentFilter = new IntentFilter();
        intentFilter.addAction(SmsRetriever.SMS_RETRIEVED_ACTION);
        context.registerReceiver(smsReceiver, intentFilter);
    }

    public void detach(Context context) {
        context.unregisterReceiver(smsReceiver);
    }
}

[在常规应用中使用startSmsRetriever()启动SMS检索器时,将调用onSuccess。

[尝试在与Instant App运行的同一应用程序中启动SMS检索器时,调用onFailure并显示错误消息17:API:SmsRetriever.API在此设备上不可用。

最终,我们希望运行的即时应用程序能够自动处理SMS发送的一次性密码,以验证会话。关于该主题的任何信息都将有所帮助。

我目前正在Pixel 3(API 28)模拟器中运行它。

android sms android-instant-apps
1个回答
0
投票

正如TWL所说,它确实有效。它只是在模拟器中不起作用。

© www.soinside.com 2019 - 2024. All rights reserved.