版權聲明:本文為部落客原創文章,未經部落客允許不得轉載。 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); }
});
總結:這三步搞定,很友善,讓你的應用從此告别手動輸入驗證碼的時代。