Android 短信验证码自动填写

1.自定义Observer监听短信数据库变化(注意添加短信权限)

import android.app.Activity;import android.content.ContentResolver;import android.database.ContentObserver;import android.database.Cursor;import android.net.Uri;import android.os.Handler;import android.text.TextUtils;import java.util.regex.Matcher;import java.util.regex.Pattern;/** * Created by 001 on 17/3/22. */public class SmsObserver extends ContentObserver {  public static final String SMS_URI_INBOX = "content://sms/inbox";  private Activity activity = null;  private String smsContent = "";  private SmsListener listener;  public SmsObserver(Activity activity, Handler handler, SmsListener listener) {    super(handler);    this.activity = activity;    this.listener = listener;  }  @Override  public void onChange(boolean selfChange) {    super.onChange(selfChange);    Cursor cursor = null;    // 读取收件箱中含有某关键词的短信    ContentResolver contentResolver = activity.getContentResolver();    cursor = contentResolver.query(Uri.parse(SMS_URI_INBOX), new String[] {            "_id", "address", "body", "read" }, "body like ? and read=?",        new String[] { "%关键词%", "0" }, "date desc");    if (cursor != null) {      cursor.moveToFirst();      if (cursor.moveToFirst()) {        String smsbody = cursor            .getString(cursor.getColumnIndex("body"));        String regEx = "[^0-9]";        Pattern p = Pattern.compile(regEx);        Matcher m = p.matcher(smsbody.toString());        smsContent = m.replaceAll("").trim().toString();        if (!TextUtils.isEmpty(smsContent)) {          listener.onResult(smsContent);        }      }    }  }  /*   * 短信回调接口   */  public interface SmsListener {    /**     * 接受sms状态     *     * @Title: onResult     */    void onResult(String smsContent);  }}

2.使用:

SmsObserver smsObserver = new SmsObserver(this, new Handler(), new SmsObserver.SmsListener() {      @Override      public void onResult(String smsContent) { //根据需求写 //如:editText.setText(smsContent);      }    });this.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, smsObserver);

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

更多相关文章

  1. Android将发送的短信插入数据库
  2. android 发送短信sms
  3. android(2)(循环发送短信)
  4. Android 系统自带的发送短信的界面源码
  5. Android 获取通话记录和短信内容
  6. android 访问SMS短信收件箱

随机推荐

  1. Android(安卓)源码 URLUTIL 判断文件类型
  2. Android中比较常见的Java super关键字
  3. ExpandableListActivity 使用
  4. Android(安卓)EditText禁止输入空格和特
  5. Android打开MyEclipse报错:发现了以元素 '
  6. 让我们创建屏幕- Android(安卓)UI布局和
  7. android view增加点击效果,如:iReader书架
  8. Android读写文件和TextView的滚动
  9. ServiceManager & SystemService
  10. android 数据存储值 sharedPreferences