package com.velo.quanquan.util; import java.util.regex.Matcher; import java.util.regex.Pattern; import net.iaf.framework.util.Loger; import android.app.Activity; import android.database.ContentObserver; import android.database.Cursor; import android.net.Uri; import android.os.Handler; import android.widget.EditText; /** * 读取短信内容 自动填充验证码 * * @author qjx * */ public class SmsContentUtil extends ContentObserver { public static final String SMS_URI_INBOX = "content://sms/inbox"; private Activity activity = null; private String smsContent = ""; private EditText verifyText = null; public SmsContentUtil(Handler handler) { super(handler); } public SmsContentUtil(Activity activity, Handler handler, EditText verifyText) { super(handler); this.activity = activity; this.verifyText = verifyText; } @Override public void onChange(boolean selfChange) { super.onChange(selfChange); Cursor cursor = null;// 光标 // 读取收件箱中指定号码的短信 cursor = activity.getContentResolver().query(Uri.parse(SMS_URI_INBOX), new String[] { "_id", "address", "body", "read", "date" }, "address=? and read=?", new String[] { "15555215554", "0" }, "date desc"); if (cursor != null) {// 如果短信为未读模式 cursor.moveToFirst(); if (cursor.moveToFirst()) { String smsbody = cursor .getString(cursor.getColumnIndex("body")); Loger.e("smsbody:" + smsbody); String regEx = "[^0-9]"; Pattern p = Pattern.compile(regEx); Matcher m = p.matcher(smsbody.toString()); smsContent = m.replaceAll("").trim().toString(); verifyText.setText(smsContent); verifyText.setSelection(verifyText.getText().toString().trim().length()); } } } }
调用该方法的地方的代码:
SmsContentUtil smsContent = new SmsContentUtil(LoginActivity.this, new Handler(), verifyText);
// 注册短信变化监听
this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, smsContent );