短信验证码自动填充
来源:互联网 发布:淘宝店铺贷款利息多少 编辑:程序博客网 时间:2024/06/10 20:16
短信验证码自动填充
1、简述
不知道大家有没觉得,注册一个app的时候,还要手动输入短信验证码,挺烦的?反正我觉得是挺烦的!其实这也不是什么高深的技术,我们可以通过代码的形式,完成短信验证码的自动填充。
思路:
①、继承系统的ContentObserver类,当内容发生变化时,那么系统就会回调ContentObserver的onChange方法,观察者模式,这些都是系统帮我们完成的,我们需要做的就是写一个类继承ContentObserver即可;
public void onChange(boolean selfChange, Uri uri)
②、根据onChange方法回调的uri判断是否是接收短信的Uri,如果是,那么根据ContentResolver查询短信的内容,获取到短信验证码,并通过接口回调的形式返回给调用者;
2、代码示例
①、继承ContentObserver的SmsObserver类:
public class SmsObserver extends ContentObserver { private Context mContext; private IValidateCode iValidateCode; public SmsObserver(Context context, Handler handler) { super(handler); mContext = context; } public SmsObserver(Context context, Handler handler, IValidateCode iValidateCode) { super(handler); mContext = context; this.iValidateCode = iValidateCode; } @Override public void onChange(boolean selfChange, Uri uri) { super.onChange(selfChange, uri); String code = ""; if (uri.toString().equals("content://sms/raw")) { return; } Uri inboxUri = Uri.parse("content://sms/inbox"); //根据ContentResolver解析收信箱新的短信 Cursor c = mContext.getContentResolver().query(inboxUri, null, null, null, "date desc"); if (c != null) { if (c.moveToFirst()) { String address = c.getString(c.getColumnIndex("address")); String body = c.getString(c.getColumnIndex("body")); if (!address.equals(AppConstant.validateCodeNum)) { return; } Pattern pattern = Pattern.compile("(\\d{6})"); Matcher matcher = pattern.matcher(body); if (matcher.find()) { code = matcher.group(0); //通过接口回调给调用者返回验证码 iValidateCode.getCode(code); } } c.close(); } }}②、回调接口
public interface IValidateCode { void getCode(String code);}③、在需要的页面调用
private void initSmsObserver() { if (timer != null) { timer.cancel(); } smsObserver = new SmsObserver(this, null, new IValidateCode() { @Override public void getCode(final String code) { runOnUiThread(new Runnable() { @Override public void run() { et_validate_code.setText(code); } }); } }); getContentResolver().registerContentObserver(Uri.parse("content://sms"), true, smsObserver); }当页面进入后台时,取消短信验证码的监听
@Override protected void onPause() { super.onPause(); if (smsObserver != null) getContentResolver().unregisterContentObserver(smsObserver); }
0 0
- 短信验证码自动填充
- 短信验证码自动填充
- Android自动填充短信验证码
- Android自动填充短信验证码
- 自动获取短信验证码填充
- Android自动填充短信验证码
- Android 短信验证码自动填充
- 自动填充短信验证码实现方式
- Android实现自动填充短信验证码
- android短信验证码自动填充
- Android短信验证码自动填充
- Android自动填充短信验证码
- Android自动填充短信验证码
- Android 自动填充短信验证码
- 自动填充短信验证码实现方式
- Android自动填充短信验证码
- 【Android短信拦截】自动填充短信验证码
- android--监听短信实现短信验证码自动填充
- 用BaseAdapter解决Listview列表项中的子控件无法获得焦点
- Python代码分析工具:PyChecker、Pylint
- python str转dict
- 在Gridview中 实现textview的跑马灯效果
- Vim使用小结
- 短信验证码自动填充
- Android源码-SparseArray
- 随想
- H.264码流解析 一个SPS的nalu及获取视频的分辨率
- java支持xls格式的excel导入和导出
- 自定义简单标签
- 二叉树的非递归遍历
- Handlebars 的使用
- KPI管理