Android ContentObserver实现验证码自动填入
来源:互联网 发布:程序员的自我修养 pdf 编辑:程序博客网 时间:2024/05/16 02:19
在这里跟大家分享下Android的内容监听者 ContentObserver 内容监听者是监听一个指定路径里面的数据,当发生改变的时候会调用onChange方法,在这里跟大家实现一个验证码的自动填写。
布局代码就一个TextView用来显示验证码。
MainActivity中代码如下:
private TextView textView; private Handler handler; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //要赋值的TextView textView = (TextView) findViewById(R.id.tv_main_number); //实例化一个handler handler = new Handler(){ //接受消息的方法 @Override public void handleMessage(Message msg) { super.handleMessage(msg); //通过Message 获取bundle bundle是一个放数据的 Bundle bundle=msg.getData(); //重bundle中拿出放入相对应key的value textView.setText(bundle.getString("number")); } }; //开始监听内容 sms为所有短信包括发短信箱,收短信箱,草稿箱... this.getContentResolver().registerContentObserver(Uri.parse("content://sms"),true,new MyObserver(handler)); }//自己用内部类实现CotentObserver 需要重写构造方法 class MyObserver extends ContentObserver{ public MyObserver(Handler handler) { super(handler); } //当监听的sms中发生了改变的时候会调用该方法,比如来短信了。 @Override public void onChange(boolean selfChange) { //查询收信箱中所有的消息按时间排序 Cursor cursor=MainActivity.this.getContentResolver().query(Uri.parse("content://sms/inbox"),null,null,null,"date desc"); //判断游标是否为空 if(cursor!=null) { //如果游标有值,这时的游标查询出来的数据是最新来的短信 if (cursor.moveToNext()) { //如果收到的短信号码为*******并且内容包含了验证码三个字那么就是想要的 if (cursor.getString(cursor.getColumnIndex("address")).equals("+86***********") && cursor.getString(cursor.getColumnIndex("body")).contains("验证码")) { //获取刚才的短信内容 String date = cursor.getString(cursor.getColumnIndex("body")); //获取:的开始坐标 int star = date.indexOf(":"); //在:的坐标基础上+1截取后面四位数 String data = date.substring(star + 1, star + 5); //实例化消息 Message ms = new Message(); //实例化箱子 Bundle bundle = new Bundle(); //放入验证码到箱子里 bundle.putString("number", data); //把箱子放入消息中 ms.setData(bundle); //发送消息,通过handler去更新 handler.sendMessage(ms); } } } } }
所有解释都在代码注释上,注意要增加短信的权限。
今天的分享都在这里了,根据需求可更改判断的条件和判断短信的内容。
1 0
- Android ContentObserver实现验证码自动填入
- Android中实现短信验证码自动填入
- android获取短信验证码自动填入
- Android实战简易教程-第三十六枪(监听短信-实现短信验证码自动填入)
- Android实战简易教程<三十六>(监听短信-实现短信验证码自动填入)
- Android短信验证码自动填入解决方案之一:BroadcastReceiver
- 安卓ContentObserver实现验证码自动补全
- Android 应用中使用ContentObserver自动填写短信验证码
- Android:ContentObserver(内容监听者)之自动接收验证码
- 【Android-实践】检测验证码短信,将验证码自动填入
- 通过ContentObserver自动获取短信验证码
- Android实战简易教程<三十九>(第三方短信验证平台Mob和验证码自动填入功能结合实例)
- Android ContentObserver监听短信提取验证码
- Android 自动获取验证码 两种方式BroadcastReceiver及ContentObserver总结
- 自动填充短信验证码(使用ContentObserver)
- 自动填充短信验证码(使用ContentObserver)
- 自动填充短信验证码(使用ContentObserver)
- 自动填充短信验证码(使用ContentObserver)
- PAT Build A Binary Search Tree
- 支配集、覆盖集、独立集、匹配与着色
- send函数&recv函数详解
- MySQL中的日期函数的使用
- Hybrid端口的工作原理
- Android ContentObserver实现验证码自动填入
- 1.5:复用具体实现
- Mybatis 一对一,一对多,多对一,多对多 的处理
- 腊月十六回家诗
- JAVA泛型总结
- <Android 开源库> GreenDAO 用法详解<译文>
- 线程安全
- linux 下添加环境变量(使用 path = $path... )
- 模拟用户登录效果