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使用Intent操作拨打号码发送短信
  2. android实现事件监听的2种常用方式
  3. android OS Service
  4. android OS Service
  5. android 发送短信sms
  6. Android中内容观察者的使用---- ContentObserver类详解
  7. Android(安卓)底部导航BottomNavigationView(非官方)
  8. Android将发送的短信插入数据库
  9. Android监听应用程序安装和卸载

随机推荐

  1. 如何在Android项目中配置BuildConfig常量
  2. Android(安卓)AlarmManager的一些问题
  3. 修改android 默认的debug key 为正式的ke
  4. 那些好玩的 android 小事
  5. Hierarchy Viewer的替代品Layout Inspect
  6. Android(安卓)Material Design动画 Revea
  7. Android单元测试(二)
  8. Android(安卓)Volley 详解 Google发布的
  9. android防新闻循环轮播图效果
  10. 整理 酷炫 Android、Flutter开源UI框架