Android实战简易教程-第三十六枪(监听短信-实现短信验证码自动填入)

本文介绍如何通过监听短信,实现在Android应用中自动填充接收到的验证码,提高用户体验。详细步骤包括创建SMSBroadcastReceiver,配置AndroidManifest.xml,截取短信内容并从中提取验证码。实现在用户收到短信后,验证码能自动填充到输入框,降低用户操作复杂度。
摘要由CSDN通过智能技术生成

一般用户喜欢用手机号作为用户名注册APP账号,这时一般都是通过手机验证码的方式进行验证,下面我们就研究一个非常实用的方法,通过监听短信-实现短信验证码的自动填入,提高用户体验。
首先我们看一下如何监听手机短信。

一、获取短信全部内容

1.新建一个SMSBroadcastReceiver:

package com.example.messagecut;
import java.text.SimpleDateFormat;
import java.util.Date;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage;
/**
 * 配置广播接收者:
 *  <receiver android:name=".SMSBroadcastReceiver">
 *     <intent-filter android:priority="1000">
 *         <action android:name="android.provider.Telephony.SMS_RECEIVED"/>
 *     </intent-filter>
 *  </receiver>
 * 
 *  注意:
 *  <intent-filter android:priority="1000">表示:
 *  设置此广播接收者的级别为最高
 */

public class SMSBroadcastReceiver extends BroadcastReceiver {
   
    private static MessageListener mMessageListener;
    public SMSBroadcastReceiver() {
        super();
    }

    @Override
    public void onReceive(Context context, Intent intent) {
             Object [] pdus= (Object[]) intent.getExtras().get("pdus");
             for(Object pdu:pdus){
                SmsMessage smsMessage=SmsMessage.createFromPdu((byte [])pdu);
                String sender=smsMessage.getDisplayOriginatingAddress();
                String content=smsMessage.getMessageBody();
                long date=smsMessage.getTimestampMillis();
                Date timeDate=new Date(date);
                SimpleDateFormat simpleDateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
                String time=simpleDateFormat.format(timeDate);

                System.out.println("短信来自:"+sender);
                System.out.println("短信内容:"+content);
                System.out.println("短信时间:"+time);

                mMessageListener.OnReceived(content);

                //如果短信来自5556,不再往下传递,一般此号码可以作为短信平台的号码。
                if("5556".equals(sender)){
                    System.out.println(" abort ");
                    abortB
评论 8
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值