1.创建验证码实体类
public class SmsUtil extends ContentObserver {
public static final String SMS_URI_INBOX = "content://sms/inbox";
private Activity activity = null;
private String smsContent = "";
private EditText verifyText = null;
public SmsUtil(Activity activity, TaskHandler handler, EditText verifyText) {
super(handler);
this.activity = activity;
this.verifyText = verifyText;
}
@Override
public void onChange(boolean selfChange) {
super.onChange(selfChange);
Cursor cursor = null;// 光标
// 读取收件箱中指定号码的短信
if (null != activity.managedQuery(Uri.parse(SMS_URI_INBOX),
new String[] { "_id", "address", "body", "read" },
"address=? and read=?", new String[] { "1069036136580", "0" },
"date desc")) {
cursor = activity.managedQuery(Uri.parse(SMS_URI_INBOX),
new String[] { "_id", "address", "body", "read" },
"address=? and read=?",
new String[] { "1069036136580", "0" }, "date desc");
if (cursor != null) {// 如果短信为未读模式
cursor.moveToFirst();
if (cursor.moveToFirst()) {
String smsbody = cursor.getString(cursor
.getColumnIndex("body"));
System.out.println("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);
}
}
}
}
}
2.监听
content = new SmsUtil(UserRegisterActivity.this, mTaskHandler,
mCodeInput); // 注册短信变化监听
this.getContentResolver().registerContentObserver(
Uri.parse("content://sms/"), true, content);
3.取消注册
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
this.getContentResolver().unregisterContentObserver(content);
}