【发布时间】:2016-08-29 10:18:15
【问题描述】:
所以我正在开发一个类似 WhatsApp 的验证系统,用户输入通过短信接收的代码,然后将代码发送回服务器..yada yada ..所有基本的东西。
我的困境是我收到并正确阅读了短信。我如何过滤正文,以便它自动将号码(不是电话号码,而是验证码)传递给 editText。我试图避免用户手动输入验证码。让我在下面显示一些代码。
public void processReceive(Context context, Intent intent){
Bundle bundle = intent.getExtras();
if(bundle == null){
return;
}
Object[] objectArray = (Object[])bundle.get("pdus");
for(int i = 0; i < objectArray.length; i++){
SmsMessage smsMsg = SmsMessage.createFromPdu((byte[])objectArray[i]);
String smsBody = smsMsg.getMessageBody();
Toast.makeText(context, smsBody, Toast.LENGTH_SHORT).show();
}
}
//在上面的代码中,我的广播接收器接收到短信,我可以在吐司中显示正文。短信内容如下:“您的验证码:12345”。
我如何只从短信中获取代码并将其值发送到并像 WhatsApp 一样以编程方式编辑文本。
number = (EditText) findViewById(R.id.number);
谢谢。非常感谢您的意见
【问题讨论】:
-
如果你有邮件内容,只需获取最后5个字符的子字符串。
-
我担心超时短信格式可能会改变,验证码的位置也会改变。
-
您始终可以扫描字符串中的 5 个连续数字。这样,如果验证码移动,您就会被覆盖。但是,如果代码的长度发生变化,这并不包括您。
-
感谢大家的所有回答,他们也非常棒。我选择了@MedAmine.Rihane 的解决方案,因为它使用起来最简单、最快捷。随着项目的扩展,我将重新审视其他答案。谢谢
标签: java android android-edittext sms