软件编程
位置:首页>> 软件编程>> Android编程>> Android 短信验证码自动填写

Android 短信验证码自动填写

作者:lqh  发布时间:2022-06-15 08:22:56 

标签: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);

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

来源:http://blog.csdn.net/ufo00001/article/details/64920867

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com