Android如何通過手機自動獲取短信驗證碼
本文實例為大家分享了Android實現(xiàn)手機自動獲取短信驗證碼功能,供大家參考,具體內(nèi)容如下
1、短信監(jiān)聽廣播
2、讀取短信內(nèi)容
3、截取短信內(nèi)容【可以 reg截取】
4、填寫至相應控件
PS:DevStore測試沒有獲取到驗證碼


源碼片段
public class MainActivity extends Activity {
private BroadcastReceiver smsReceiver;
private IntentFilter filter2;
private Handler handler;
private EditText et;
private String strContent;
private String patternCoder = "(?<!--\\d)\\d{6}(?!\\d)";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et = (EditText) findViewById(R.id.et);
handler = new Handler() {
public void handleMessage(android.os.Message msg) {
et.setText(strContent);
};
};
filter2 = new IntentFilter();
filter2.addAction("android.provider.Telephony.SMS_RECEIVED");
filter2.setPriority(Integer.MAX_VALUE);
smsReceiver = new BroadcastReceiver() {
@Override
public void onReceive(Context context, Intent intent) {
Object[] objs = (Object[]) intent.getExtras().get("pdus");
for (Object obj : objs) {
byte[] pdu = (byte[]) obj;
SmsMessage sms = SmsMessage.createFromPdu(pdu);
// 短信的內(nèi)容
String message = sms.getMessageBody();
Log.d("logo", "message " + message);
// 短息的手機號。。+86開頭?
String from = sms.getOriginatingAddress();
Log.d("logo", "from " + from);
Time time = new Time();
time.set(sms.getTimestampMillis());
String time2 = time.format3339(true);
Log.d("logo", from + " " + message + " " + time2);
strContent = from + " " + message;
handler.sendEmptyMessage(1);
if (!TextUtils.isEmpty(from)) {
String code = patternCode(message);
if (!TextUtils.isEmpty(code)) {
strContent = code;
handler.sendEmptyMessage(1);
}
}
}
}
};
registerReceiver(smsReceiver, filter2);
}
@Override
protected void onDestroy() {
super.onDestroy();
unregisterReceiver(smsReceiver);
}
/**
* 匹配短信中間的6個數(shù)字(驗證碼等)
*
* @param patternContent
* @return
*/
private String patternCode(String patternContent) {
if (TextUtils.isEmpty(patternContent)) {
return null;
}
Pattern p = Pattern.compile(patternCoder);
Matcher matcher = p.matcher(patternContent);
if (matcher.find()) {
return matcher.group();
}
return null;
}
}</pre-->
文章末尾為大家在分享兩個專題,供大家參考:
以上就是Android通過手機自動獲取短信驗證碼的詳細代碼,希望對大家實現(xiàn)手機自動獲取短信驗證碼有所幫助。
相關(guān)文章
利用Kotlin的協(xié)程實現(xiàn)簡單的異步加載詳解
這篇文章主要給大家介紹了關(guān)于利用Kotlin的協(xié)程實現(xiàn)簡單的異步加載的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧。2018-03-03
實現(xiàn)Android studio設(shè)置自動導包及自動導包快捷鍵
這篇文章主要介紹了實現(xiàn)Android studio設(shè)置自動導包及自動導包快捷鍵的相關(guān)資料,需要的朋友可以參考下2017-05-05
Android系統(tǒng)進程間通信(IPC)機制Binder中的Server和Client獲得Service Manager接
本文主要介紹Android IPC通信Binder中的Server和Client獲得Service Manager接口,這里詳細的說明了如何實現(xiàn)Service Manager接口,對研究Android源碼的朋友提供幫助,有需要的小伙伴可以參考下2016-08-08
Android開發(fā)實現(xiàn)的獲取sdcard大小及內(nèi)存大小工具類
這篇文章主要介紹了Android開發(fā)實現(xiàn)的獲取sdcard大小及內(nèi)存大小工具類,涉及Android針對手機硬件SD卡及內(nèi)存相關(guān)操作技巧,需要的朋友可以參考下2017-11-11
Android實現(xiàn)長按back鍵退出應用程序的方法
這篇文章主要介紹了Android實現(xiàn)長按back鍵退出應用程序的方法,實例分析了Android按鈕事件的操作技巧,需要的朋友可以參考下2015-05-05
Android仿支付寶自定義密碼輸入框及安全鍵盤(密碼鍵盤)
這篇文章主要介紹了Android仿支付寶自定義密碼輸入框及安全鍵盤(密碼鍵盤),需要的朋友可以參考下2018-01-01

