本文實例講解了Android自動提取短信驗證碼解決方案,分享給大家供大家參考,具體內容如下
主要功能及優點
1.收到驗證碼短信后,自動提取短信中的驗證碼填寫到相應輸入框
2.可指定一個號碼,只讀取與他有關短信,避免提取來源錯誤
3.利用正則表達式,可匹配各種類型驗證碼
模塊集成關鍵步驟
將auto_getcode_demo中src包里的SMSContentObserver類復制到你的項目src包中

在SMSContentObserver中:
修改正則表達式內容來匹配自己想要獲取的字符串
private String patternCoder = "http://d{4}"; //正則表達式 指定一個號碼,只讀取與他有關的新消息。
private boolean checkPhone(String phone) { // TODO Auto-generated method stub String c_phone = "10690032980066"; if(c_phone.equals(phone) ) return true; return false;} 指定一關鍵字符串,用來確認短信內容是我們想要去提取的
private boolean checkString(String message){ if(TextUtils.isEmpty(message)) return false; Pattern p = Pattern.compile("FinalShares"); //這個關鍵字符串可以自定義 Matcher matcher = p.matcher(message); if(matcher.find()) return true; return false;} 在MainActivity中:
注冊內容觀察者,用來監聽手機短信的變動
@Overridepublic void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); smsContentObserver = new SMSContentObserver(this, mHandler); // 創建1個對象 registerContentObservers() ; //注冊內容觀察者} private void registerContentObservers() { // ”表“內容觀察者 ,通過測試我發現只能監聽此Uri -----> content://sms // 監聽不到其他的Uri 比如說 content://sms/outbox Uri smsUri = Uri.parse("content://sms"); getContentResolver().registerContentObserver(smsUri, true,smsContentObserver);} 創建一個handler來接收觀察者監聽傳來的信息,當接收到指定號碼短信時,自動獲得相應驗證碼并填寫到對應控件
private Handler mHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case MSG_OUTBOXCONTENT: String outbox = smsContentObserver.getstrContent(); etSmsoutbox.setText(outbox); break; default: break; } } }; 在AndroidManifest中添加相應權限
<uses-permission android:name="android.permission.READ_SMS"/><uses-permission android:name="android.permission.RECEIVE_SMS"/>
環境相關
開發平臺:Android
語言: java
開發工具: eclipse
效果展示

以上就是本文的全部內容,希望對大家的學習有所幫助。
新聞熱點
疑難解答
圖片精選