Android中實現簡訊驗證碼自動填入

請叫我東子發表於2015-08-17

版權宣告:本文為博主原創文章,未經博主允許不得轉載。 https://blog.csdn.net/u010046908/article/details/47724807

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();
    }
@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+"簡訊內容:"+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); }  
});

總結:這三步搞定,很方便,讓你的應用從此告別手動輸入驗證碼的時代。


相關文章