自动填写验证码(内容提供者)
来源:互联网 发布:淘宝开店认证需要什么 编辑:程序博客网 时间:2024/05/16 08:52
package com.example.receiver;import java.util.regex.Matcher;import java.util.regex.Pattern;import android.content.ContentResolver;import android.content.Context;import android.database.ContentObserver;import android.database.Cursor;import android.net.Uri;import android.os.Handler;import android.widget.EditText;/*** @Description: 自动填写校验码* * 需要权限 <uses-permission* android:name="android.permission.RECEIVE_SMS" />* <uses-permission android:name="android.permission.READ_SMS" />*/public class VerifyUtil {/*** * @Description: (用一句话描述该方法做什么) 注册内容提供者* @param context* @param editText 填写验证码的输入框* @param number 手机号码**/public static void setVerify(Context context, EditText editText,String number) {SmsContent content = new SmsContent(context, new Handler(), editText,number);context.getContentResolver().registerContentObserver(Uri.parse("content://sms/"), true, content);}static class SmsContent extends ContentObserver {// public static final String SMS_URI_INBOX = "content://sms/inbox";private Context context = null;private String smsContent = "";private EditText verifyText = null;private String number;public SmsContent(Context context, Handler handler,EditText verifyText, String number) {super(handler);this.context = context;this.verifyText = verifyText;this.number = number;}@Overridepublic void onChange(boolean selfChange) {super.onChange(selfChange);ContentResolver resolver = context.getContentResolver();Cursor cursor = null;// 光标// 读取收件箱中指定号码的短信cursor = resolver.query(Uri.parse("content://sms/"), new String[] {"_id", "address", "body", "read" }, "address=?",new String[] { "+86" + number }, "date desc");if (cursor.getCount() == 0) {cursor = resolver.query(Uri.parse("content://sms/"),new String[] { "_id", "address", "body", "read" },"address=?", new String[] { number }, "date desc");}if (cursor != null) {//这个手机号有短信 //去出短信中所有数字// int count = cursor.getCount();// 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();verifyText.setText(smsContent);}}}}}
如果没有成功,打印一下 里面数据库里存的address .这里只判断了 正常手机号码, 和+86手机号码.小米手机已通过测试.
自动获取短信验证码,两种方式,
内容提供者:获取短信数据库,查询指定号码.(就是以上代码)
广播接收者, 广播接收者,接收收到短信广播,取出当前短信内容, 容易被其他三方软件和系统自带软件提前拦截到.
有的软件是在开机就启动服务,进行拦截. 谁先接收到 可以取消广播,自己的软件就接收不到了.
0 0
- 自动填写验证码(内容提供者)
- 短信验证码自动填写
- 短信验证码自动填写
- Android自动填写验证码
- 短信验证码自动填写
- Android 自动填写验证码
- 短信验证码自动填写
- 用ContentObserver内容观察者写了一个自动填写验证码
- 读取短信自动填写验证码功能
- Android 之短信验证码自动填写
- android 短信验证码自动填写
- android短信验证码自动填写
- Android 短信验证码自动填写
- Android 短信验证码自动填写
- Android短信验证码的自动填写
- android 短信验证码自动填写
- Android :短信验证码自动填写-v2
- Android 短信验证码自动填写
- 图论:回路判断和拓扑排序(DFS)
- 让LINUX网卡开机自动启动
- 在jsp页面下, 让eclipse完全支持HTML/JS/CSS智能提示
- R与JAVA的整合
- hadoop副本控制
- 自动填写验证码(内容提供者)
- dojo 加载器源文件讲解
- Wrong orientation? No orientation specified, and the default is horizontal, yet this layout has mult
- 保险公司主要以什么盈利【整理】
- android adb下tcpdump抓包方法
- 计算机视觉CV 圈子
- C语言和C++的区别
- 《JAVA与模式》之责任链模式
- C#学习笔记(4)