Android中实现短信验证码自动填入

来源:互联网 发布:java建立socket服务器 编辑:程序博客网 时间:2024/05/16 06:27

Android中实现短信验证码自动填入

由于目前的好多应用都有短信验证,短信验证码收到后,用户手动输入已经显得有麻烦,于是我写了这篇博文,希望能对大家有所帮助。

实现步骤:

1.写一个SmsBroadcastReceiver,在AndroidMainifirst.xml文件中注册:

/** * 配置广播接收者: * <receiver android:name=".SMSBroadcastReceiver"> *  <intent-filter android:priority="1000">表示: * 设置此广播接收者的级别为最高 */  <action android:name="android.provider.Telephony.SMS_RECEIVED"/>  </intent-filter> </receiver> 


类代码:

public class SmsBroadcastReceiver extends BroadcastReceiver{private  MessageListener mMessageListener;    public SMSBroadcastReceiver() {        super();    }@Overridepublic 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+"短信内容:"+content+"短信时间:"+time);           mMessageListener.OnReceived(content);           //如果短信来自10690157263152,不再往下传递,一般此号码可以作为短信平台的号码。           if("10690157263152".equals(sender)){               System.out.println(" abort ");               abortBroadcast();           }        }}// 回调接口    public interface MessageListener {        public void OnReceived(String message);    }    public void setOnReceivedMessageListener(MessageListener messageListener) {        this.mMessageListener=messageListener;    }}


在Activity使用的方法:


mSMSBroadcastReceiver=new SMSBroadcastReceiver();  mSMSBroadcastReceiver.setOnReceivedMessageListener(new MessageListener() {  public void OnReceived(String message) {  mTextView.setText(message); }  });

总结:这三步搞定,很方便,让你的应用从此告别手动输入验证码的时代。

0 0