Android   发布时间:2022-04-28  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Android 短信验证码自动填写大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

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);


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

大佬总结

以上是大佬教程为你收集整理的Android 短信验证码自动填写全部内容,希望文章能够帮你解决Android 短信验证码自动填写所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签:短信验证