概要
短信验证码自动填写当前Activity,动态注册一个广播监听器,如果监听到短信验证码消息,把内容回填到EditText输入框中。
创建广播监听器SMSReceiver
SMSReceiver继承BroadcastReceiver,重写onReceiver()方法,将短信验证码回写到EditText中,关键代码
- private class SMSReceiver extends BroadcastReceiver {
- @Override
- public void onReceive(Context context, Intent intent) {
- // 从Intent中接受信息
- Object[] pdus = (Object[]) intent.getExtras().get("pdus");
- String content = null;
- Date date = null;
- String number = null;
- for (Object p : pdus) {
- byte[] sms = (byte[]) p;
- SmsMessage message = SmsMessage.createFromPdu(sms);
- // 获取短信内容
- content = message.getMessageBody();
- // 获取发送时间
- date = new Date(message.getTimestampMillis());
- // 获取发件人号码
- number = message.getOriginatingAddress();
- // 终止广播
- abortBroadcast();
- }
- // 处理数据...
- mTextView.setText("内容=" + content + ";发件人号码=" + number + ";发送时间="
- + date);
- }
- }
动态注册SMSReceiver
在需要监听的Activity中注册广播,动态监听将在Activity退出后结束,注册代码在onCreate方法中调用
- private void registerSMSReceiver() {
- IntentFilter mFilter = new IntentFilter();
- mFilter.addAction("android.provider.Telephony.SMS_RECEIVED");
- mFilter.setPriority(1000);// 设置广播监听器优先级1000,最大值
- SMSReceiver mReceiver = new SMSReceiver();
- registerReceiver(mReceiver, mFilter);
- }
静态注册SMSReceiver
在AndroidManifest.xml清单文件中注册广播,动态注册和静态注册的区别,可以参考《Android广播注册两者方式》
- <receiver android:name=".SMSBroadcastReceiver">
- <intent-filter android:priority="1000"> <!-- 设置优先级为最高 -->
- <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
- </intent-filter>
- </receiver>
你可能感兴趣的文章
来源:TeachCourse,
每周一次,深入学习Android教程,关注(QQ158#9359$239或公众号TeachCourse)
转载请注明出处: https://www.teachcourse.cn/1153.html ,谢谢支持!
转载请注明出处: https://www.teachcourse.cn/1153.html ,谢谢支持!