首页 > 解决方案 > 使用“复制代码”按钮发送包含验证码的短信

问题描述

我已经设法使用SmsManager和发送包含来自我的应用程序的验证码的短信SmsReceiver。但这就像一条普通的 SMS 消息。我想知道我是否可以告诉设备 SMS 包含代码,因此用户的设备将自动打开弹出对话框询问用户他们是否会将代码复制到剪贴板。

我知道有几个应用程序也这样做。我的意思是,我从来没有捕捉到弹出对话框的屏幕截图,但我希望你明白这一点。(弹出窗口来自 android/system,而不是来自 apk)

甚至按钮也显示在 SMS 中:

在此处输入图像描述

我们怎样才能做到这一点?

这是我当前活动中的代码:

SmsManager sms = SmsManager.getDefault();
sms.sendTextMessage(val_no_hp, null, "Kode verifikasi aplikasi: " + kode_verifikasi, null, null);

kode_otp_rcv = new SmsReceiver(MainActivity.this);
IntentFilter kode_otp_filter = new IntentFilter("android.provider.Telephony.SMS_RECEIVED");
registerReceiver(kode_otp_rcv, kode_otp_filter);

这是我的 SmsReceiver 类:

public class SmsReceiver extends BroadcastReceiver {
    private MainActivity act;
    private static int PANJANG_KODE_VERIFIKASI = 4;

    public SmsReceiver(MainActivity act) {
        this.act = act;
    }

    @Override
    public void onReceive(Context context, Intent intent) {
        SmsMessage[] msgs = Telephony.Sms.Intents.getMessagesFromIntent(intent);
        SmsMessage msg = msgs[0];

        String body = msg.getMessageBody();
        String kode = body.substring(body.length() - PANJANG_KODE_VERIFIKASI);

        // currently my app submit verification automatically when SMS arrived
        // act.verifikasiOTP(kode, msg.getOriginatingAddress());
    }
}

标签: androidsmsmanager

解决方案


我这样发送验证短信: code: 123456 Your code from Example.com

重要的文字是:code: 1111在开头

在安卓手机中,启用了自动复制。


推荐阅读