Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android如何通過手機自動獲取短信驗證碼

Android如何通過手機自動獲取短信驗證碼

編輯:關於Android編程

本文實例為大家分享了Android實現手機自動獲取短信驗證碼功能,供大家參考,具體內容如下

1、短信監聽廣播

2、讀取短信內容

3、截取短信內容【可以 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); 
     // 短信的內容 
     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個數字(驗證碼等) 
  * 
  * @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--> 

文章末尾為大家在分享兩個專題,供大家參考:

《PHP驗證碼大全》

《ASP.NET驗證碼大全》

以上就是Android通過手機自動獲取短信驗證碼的詳細代碼,希望對大家實現手機自動獲取短信驗證碼有所幫助。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved