这里有新鲜出炉的精品教程,程序狗速度看过来!
Android 是一种基于 Linux 的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由 Google 公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用 "安卓" 或 "安致"。
这篇文章主要介绍了 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://www.phperz.com/article/17/0702/336627.html