本文实例为大家分享了Android短信验证码自动拦截读取 的具体代码,供大家参考,具体内容如下

知识准备:

1.观察者模式的理解【文章稍后来到~~】

2.Android的Cursor使用【Android基础】

3.正则表达式使用【Java基础】

4.Handler使用【Android基础】

代码整理:

MainActivity.java

import android.net.Uri;

import android.os.Bundle;

import android.os.Handler;

import android.os.Message;

import android.support.v7.app.AppCompatActivity;

import android.view.Menu;

import android.view.MenuItem;

import android.widget.EditText;

public class MainActivity extends AppCompatActivity {

public static final int MSG_RECEIVER_CODE = 1;

private EditText smsEt;

private Handler handler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

case MSG_RECEIVER_CODE:

String message= (String) msg.obj;

smsEt.setText(message);

smsEt.setSelection(message.length());

break;

default:

break;

}

}

};

private MySmsObserver mySmsObserver;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

smsEt = (EditText) findViewById(R.id.smsEt);

mySmsObserver = new MySmsObserver(this, handler);

Uri uri=Uri.parse("content://sms");

getContentResolver().registerContentObserver(uri,true, mySmsObserver);

}

@Override

public boolean onCreateOptionsMenu(Menu menu) {

getMenuInflater().inflate(R.menu.menu_main, menu);

return true;

}

@Override

protected void onDestroy() {

super.onDestroy();

getContentResolver().unregisterContentObserver(mySmsObserver);

}

@Override

public boolean onOptionsItemSelected(MenuItem item) {

int id = item.getItemId();

if (id == R.id.action_settings) {

return true;

}

return super.onOptionsItemSelected(item);

}

}

MySmsObserver.java

import android.content.Context;

import android.database.ContentObserver;

import android.database.Cursor;

import android.net.Uri;

import android.os.Handler;

import android.util.Log;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

/**

* Created by Nate on 2015/9/28.

*/

public class MySmsObserver extends ContentObserver {

private Context mContext;

private Handler mHandler;

public MySmsObserver(Context context, Handler handler) {

super(handler);

this.mContext = context;

this.mHandler = handler;

}

@Override

public void onChange(boolean selfChange, Uri uri) {

super.onChange(selfChange, uri);

if (uri.toString().equals("content://sms/raw")) {

return;

}

Uri queryUri = Uri.parse("content://sms/inbox");

String code = "";

Cursor cursor = mContext.getContentResolver().query(queryUri, null, null, null, "date desc");

if (cursor != null) {

if (cursor.moveToFirst()) {

String address = cursor.getString(cursor.getColumnIndex("address"));

String message = cursor.getString(cursor.getColumnIndex("body"));

// TODO: 2015/9/28 这里可以根据address做一些自己的判断,比如只有特定的手机号才做判断

Log.e("guxuewu", "address:==>" + address + " message:==>" + message);

// TODO: 2015/9/28 这里可以根据自己的项目进行特定的正则表达式的编写

Pattern pattern = Pattern.compile("(\\d{6})");

Matcher matcher = pattern.matcher(message);

if (matcher.find()) {

code = matcher.group(0);

mHandler.obtainMessage(MainActivity.MSG_RECEIVER_CODE, code).sendToTarget();

}

}

cursor.close();

}

}

}

activity_main.xml

xmlns:tools="http://schemas.android.com/tools"

android:layout_width="match_parent"

android:layout_height="match_parent"

android:paddingBottom="@dimen/activity_vertical_margin"

android:paddingLeft="@dimen/activity_horizontal_margin"

android:paddingRight="@dimen/activity_horizontal_margin"

android:paddingTop="@dimen/activity_vertical_margin"

tools:context=".MainActivity">

android:id="@+id/smsEt"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_centerHorizontal="true"

android:ems="10" />

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

android 自动读取短息,Android实现短信验证码自动拦截读取功能相关推荐

  1. Android 短信验证码自动填写

    这个也不是什么新东西,目前很多app都有这个功能,最近有几个小伙伴问我是怎么实现的,索性写一篇博客来为大家解答. 实现思路很简单:1.在需要输入验证码的Activity代码注册监听短信的广播 2.拦截 ...

  2. android短信验证码代码,Android短信验证码自动填写实现代码

    今天给大家分享一个Android短信验证码自动填写的功能.先看下效果图,我发送了一条短信到手机,自动填写验证码.如图: 这个小功能运用到了观察者模式,什么是观察者模式? 观察者模式 :定义对象间的一种 ...

  3. android获取短信验证码自动填入

    android获取短信验证码自动填入的简单实现,可以直接用 权限 <!--读取短信权限--> <uses-permission android:name="android. ...

  4. android 短信验证码自动填写的两种方式

    https://blog.csdn.net/u010399316/article/details/48781319 https://www.01hai.com/note/av123438 https: ...

  5. Android短信验证码自动填写功能的实现

    本文出自:黄敏争的博客 前言: android应用经常会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,通常,用户收到短信需要最小化应用去查看短信再填入验证码,必然比较麻烦, ...

  6. Android自定义控件之短信验证码自动填充

    VerifyCodeView VerifyCodeView是一个用于输入验证码的Android自定义控件,它支持数字类型的验证码,支持自定义外观,并且支持短信验证码自动填充. 项目地址:https:/ ...

  7. 短信验证码自动填写功能的实现

    http://blog.csdn.net/u014343528/article/details/50899380 本文出自:黄敏争的博客 前言: android应用经常会涉及到注册登录功能,而许多的注 ...

  8. ios 短信验证码自动填充时总是被复制两遍

    ios 短信验证码自动填充时总是被复制两遍 解决: 限制input标签的maxlength:

  9. 【SDU项目实训2019级】前端和后端实现手机短信验证码登录和注册功能

    目录 1.前端登录页面手机号验证码登录页面: 2.前端获取验证码的函数: 3.后端获取验证码代码 4.前端登录的函数: 5.后端登录的实现 6.注册功能前后端的实现 1.前端登录页面手机号验证码登录页 ...

最新文章

  1. 如何挑选深度学习 GPU?
  2. Linux脚本获取日期,Shell脚本获取格式化日期与时间
  3. SAP创建中国版免费在线课程openSAP
  4. 在D-Bus适配器中声明信号
  5. visual studio 调试python_Visual Studio Code Python 调试设置
  6. 大学计算机基础python学多久_基于Python 的“大学计算机基础”课程教学设计
  7. 用php做一个分页显示的,php一个分页显示类
  8. UVA11942 Lumberjack Sequencing【Ad Hoc】
  9. php和python-Python与PHP:有什么区别?
  10. TypeScript:Web开发
  11. java 16进制转字符串 乱码_Java中16进制与字符串之间的相互转换
  12. ansys--workbench(导入solidworks)受力分析
  13. 海外手机号码格式校验(PHP版)
  14. 信息系统安全思维导图
  15. 案例——蚂蚁金服初探,唯一的金融互联网生态...
  16. 硬件设计必备,电子元器件高清矢量图
  17. Spring 面向切面编程(AOP) D5
  18. Ubuntu18.04 安装Docker 报错:Signed-By 中含有互相冲突的值
  19. 230个形容人性格的英语词汇
  20. 安装gin和mod使用

热门文章

  1. sin30的c语言表达式,c语言sin30怎么写
  2. web结课作业的源码——HTML+CSS+JavaScript仿oppo官网手机商城(1页)
  3. 最简单的幻灯片制作,分分钟完成高逼格成片
  4. 和能力匹配的目标才是战略
  5. 【光电工程实训】几何光学 小孔成像 光的反射 光的折射 透镜成像
  6. 服务器 微信报警平台,Zabbix实现微信报警
  7. Linux /dev/mapper/ubuntu--vg-ubuntu--lv 磁盘空间不足的问题
  8. 蓝牙HCI command/event/acl/sco格式介绍
  9. Generating Summaries with Topic Templates and Structured Convolutional Decoders笔记
  10. 手把手教你做短视频去水印微信小程序(2-首页)