解决短信接收自动填写输入框的问题

2015-12-27 11:16 评论 0 条

概要

短信验证码自动填写当前Activity,动态注册一个广播监听器,如果监听到短信验证码消息,把内容回填到EditText输入框中。

创建广播监听器SMSReceiver

SMSReceiver继承BroadcastReceiver,重写onReceiver()方法,将短信验证码回写到EditText中,关键代码

  1. private class SMSReceiver extends BroadcastReceiver {  
  2.         @Override  
  3.         public void onReceive(Context context, Intent intent) {  
  4.             // 从Intent中接受信息  
  5.             Object[] pdus = (Object[]) intent.getExtras().get("pdus");  
  6.             String content = null;  
  7.             Date date = null;  
  8.             String number = null;  
  9.             for (Object p : pdus) {  
  10.                 byte[] sms = (byte[]) p;  
  11.                   
  12.                 SmsMessage message = SmsMessage.createFromPdu(sms);  
  13.                 // 获取短信内容  
  14.                 content = message.getMessageBody();  
  15.                 // 获取发送时间  
  16.                 date = new Date(message.getTimestampMillis());  
  17.                 // 获取发件人号码  
  18.                 number = message.getOriginatingAddress();  
  19.   
  20.                 // 终止广播  
  21.                 abortBroadcast();  
  22.             }  
  23.             // 处理数据...  
  24.             mTextView.setText("内容=" + content + ";发件人号码=" + number + ";发送时间="  
  25.                     + date);  
  26.   
  27.         }  
  28.   
  29. }  

动态注册SMSReceiver

在需要监听的Activity中注册广播,动态监听将在Activity退出后结束,注册代码在onCreate方法中调用

  1. private void registerSMSReceiver() {  
  2.         IntentFilter mFilter = new IntentFilter();  
  3.         mFilter.addAction("android.provider.Telephony.SMS_RECEIVED");  
  4.         mFilter.setPriority(1000);// 设置广播监听器优先级1000,最大值  
  5.         SMSReceiver mReceiver = new SMSReceiver();  
  6.         registerReceiver(mReceiver, mFilter);  
  7.     }  

静态注册SMSReceiver

AndroidManifest.xml清单文件中注册广播,动态注册和静态注册的区别,可以参考《Android广播注册两者方式》

  1. <receiver android:name=".SMSBroadcastReceiver">  
  2.                <intent-filter android:priority="1000">  <!-- 设置优先级为最高 -->  
  3.                    <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  
  4.                </intent-filter>  
  5. </receiver>  

当前文章价值6.5元,扫一扫支付后添加微信提供帮助!(如不能解决您的问题,可以申请退款)

你可能感兴趣的文章

来源:每日教程每日一例,深入学习实用技术教程,关注公众号TeachCourse
转载请注明出处: https://www.teachcourse.cn/1153.html ,谢谢支持!

资源分享

分类:Android 标签:
插入排序算法 插入排序算法
Windows 10查询已保存WiFi密码 Windows 10查询已保存WiFi密码
Android学习笔记十三:性能优化 Android学习笔记十三:性能优化
怎么快速进行Android开发的几个总结 怎么快速进行Android开发的几个

发表评论

呲牙 憨笑 坏笑 偷笑 色 微笑 抓狂 睡觉 酷 流汗 鼓掌 大哭 可怜 疑问 晕 惊讶 得意 尴尬 发怒 奋斗 衰 骷髅 啤酒 吃饭 礼物 强 弱 握手 OK NO 勾引 拳头 差劲 爱你

表情