注册会员时APP如何自动获取短信验证码
2018-05-15 00:00:00
来源:
点击:4906
喜欢:0
在APP会员注册
时,手机短信验证码自动获取,能给客户带来很大的方便,增加客户体验。目前好多APP都有手机验证码自动填写功能,但还是有一部分技术不知道怎么实现,这里就简单介绍一下
实现思路很简单:1、在需要输入验证码的Activity代码注册监听短信的广播 2、拦截短信,获取其中的验证码 3、回写到EditText
- private SmsReciver smsReciver = new SmsReciver();
-
- String ACTION_SMS_RECIVER = "android.provider.Telephony.SMS_RECEIVED";
-
-
-
- private void registSmsReciver() {
- IntentFilter filter = new IntentFilter();
- filter.addAction(ACTION_SMS_RECIVER);
-
- filter.setPriority(1000);
- registerReceiver(smsReciver, filter);
- }
-
-
-
-
- private class SmsReciver extends BroadcastReceiver {
-
- @Override
- public void onReceive(Context context, Intent intent) {
- Object[] objs = (Object[]) intent.getExtras().get("pdus");
- for (Object obj : objs) {
- yte[] pdu = (byte[]) obj;
- SmsMessage sms = SmsMessage.createFromPdu(pdu);
-
- String message = sms.getMessageBody();
- Log.d("log", "message " + message);
-
- String from = sms.getOriginatingAddress();
- Log.d("log", "from " + from);
- analysisVerify(message);
-
- }
- }
-
- }
-
-
-
-
-
-
- private void analysisVerify(String message) {
- char[] msgs = message.toCharArray();
- StringBuffer sb = new StringBuffer();
- for (int i = 0; i < msgs.length; i++) {
- if ('0' <= msgs[i] && msgs[i] <= '9') {
- sb.append(msgs[i]);
- }
- }
-
- mEtVerifyCode.setText(sb.toString());
- }
-
- @Override
- protected void onDestroy() {
- super.onDestroy();
-
- if (smsReciver != null) {
- unregisterReceiver(smsReciver);
- smsReciver = null;
- }
- }
可以看到代码逻辑比较简单,需要注意的有几点。我们这里用的代码注册广播,之所以不采取全局广播的形式原因有两天,在高版本的api,注册全局的短信监听会失效。而且就业务而言,我们监听短信只会在输入验证码的Activity里面才会用到,采用代码注册的形式,在当前Activity销毁的时候取消广播注册,更符合我们的预期,提高应用的性能。第二个需要注意的问题是优先级的问题- filter.setPriority(1000);
可以看到,我们这里把优先级设置成了最大。保证我们的应用能够尽可能的接受到短信。注意,我使用的是“尽可能”,也就是说我们不能保证短信自动填写一定能执行成功,有个小伙伴可能会问,我们不是把优先级设置成了最高了吗?为什么还不能保证了? 原因其实很简单,你能把监听短信的优先级设置成最大,同样的,其他的应用也能把短信监听的优先级设置成最大。比如说,你的手机安装有360安全卫士,把你们公司的验证码视为垃圾短信拦截了,这个时候短信拦截就失效了。
嘉之元云通信为客户提短信验证码、短信营销、国际短信、智能外呼机器人等服务!其在互联网行业深耕近10年,在短信接口平台、营销短信、国际短信、智能语音机器人方面与业内资深企业强强联合,产品服务水平一直处于行业领先水平,深受广大客户的认可,嘉之元云通信将一如既往的为您提供一流的服务。
上一篇:小云智能电话机器人--如何提升人工智能的用户体验
下一篇:嘉之元云通讯行业短信业务介绍