標籤:
自動攔截簡訊實際上就是在系統註冊一個BroadcastReceiver,然後通過設定攔截簡訊的:
1 filter.addAction("android.provider.Telephony.SMS_RECEIVED");2 filter.setPriority(Integer.MAX_VALUE);
即可攔截你所需要的簡訊了,攔截簡訊可能需要設定下最新的時間,這個問題我也考慮到了,下一步是重寫onrecever方法:
1 smsReceiver = new BroadcastReceiver() { 2 @Override 3 public void onReceive(Context context, Intent intent) { 4 Object[] objs = (Object[]) intent.getExtras().get("pdus"); 5 for (Object obj : objs) { 6 byte[] pdu = (byte[]) obj; 7 SmsMessage sms = SmsMessage.createFromPdu(pdu); 8 String message = sms.getMessageBody(); 9 Log.d("簡訊內容", "message:" + message);10 // 短息的手機號。。+86開頭?11 String from = sms.getOriginatingAddress();12 Log.d("簡訊來源", "from :" + from);13 // Time time = new Time();14 // time.set(sms.getTimestampMillis());15 // String time2 = time.format3339(true);16 // Log.d("logo", from + " " + message + " " + time2);17 // strContent = from + " " + message;18 // handler.sendEmptyMessage(1);19 if (!TextUtils.isEmpty(from)) {20 String code = patternCode(message);21 if (!TextUtils.isEmpty(code)) {22 Message msg=new Message();23 msg.what=1;24 Bundle bundle=new Bundle();25 bundle.putString("messagecode", code);26 msg.setData(bundle);27 handler.sendMessage(msg);28 }29 }30 }31 }32 };
最後註冊下broadcastrecevier,注意我們怎麼捕捉到簡訊的那個驗證碼呢,大家肯定想到了截取字串,但是這種方式比較笨拙,我這裡用的Regex截取,String patternCoder = "(?<!\\d)\\d{6}(?!\\d)"。
自動填滿簡訊.zip
android自動填滿簡訊驗證碼