android 自动读取短息,Android实现短信验证码自动拦截读取功能
本文实例为大家分享了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实现短信验证码自动拦截读取功能相关推荐
- Android 短信验证码自动填写
这个也不是什么新东西,目前很多app都有这个功能,最近有几个小伙伴问我是怎么实现的,索性写一篇博客来为大家解答. 实现思路很简单:1.在需要输入验证码的Activity代码注册监听短信的广播 2.拦截 ...
- android短信验证码代码,Android短信验证码自动填写实现代码
今天给大家分享一个Android短信验证码自动填写的功能.先看下效果图,我发送了一条短信到手机,自动填写验证码.如图: 这个小功能运用到了观察者模式,什么是观察者模式? 观察者模式 :定义对象间的一种 ...
- android获取短信验证码自动填入
android获取短信验证码自动填入的简单实现,可以直接用 权限 <!--读取短信权限--> <uses-permission android:name="android. ...
- android 短信验证码自动填写的两种方式
https://blog.csdn.net/u010399316/article/details/48781319 https://www.01hai.com/note/av123438 https: ...
- Android短信验证码自动填写功能的实现
本文出自:黄敏争的博客 前言: android应用经常会涉及到注册登录功能,而许多的注册登录或修改密码功能常常需要输入短信验证码,通常,用户收到短信需要最小化应用去查看短信再填入验证码,必然比较麻烦, ...
- Android自定义控件之短信验证码自动填充
VerifyCodeView VerifyCodeView是一个用于输入验证码的Android自定义控件,它支持数字类型的验证码,支持自定义外观,并且支持短信验证码自动填充. 项目地址:https:/ ...
- 短信验证码自动填写功能的实现
http://blog.csdn.net/u014343528/article/details/50899380 本文出自:黄敏争的博客 前言: android应用经常会涉及到注册登录功能,而许多的注 ...
- ios 短信验证码自动填充时总是被复制两遍
ios 短信验证码自动填充时总是被复制两遍 解决: 限制input标签的maxlength:
- 【SDU项目实训2019级】前端和后端实现手机短信验证码登录和注册功能
目录 1.前端登录页面手机号验证码登录页面: 2.前端获取验证码的函数: 3.后端获取验证码代码 4.前端登录的函数: 5.后端登录的实现 6.注册功能前后端的实现 1.前端登录页面手机号验证码登录页 ...
最新文章
- 如何挑选深度学习 GPU?
- Linux脚本获取日期,Shell脚本获取格式化日期与时间
- SAP创建中国版免费在线课程openSAP
- 在D-Bus适配器中声明信号
- visual studio 调试python_Visual Studio Code Python 调试设置
- 大学计算机基础python学多久_基于Python 的“大学计算机基础”课程教学设计
- 用php做一个分页显示的,php一个分页显示类
- UVA11942 Lumberjack Sequencing【Ad Hoc】
- php和python-Python与PHP:有什么区别?
- TypeScript:Web开发
- java 16进制转字符串 乱码_Java中16进制与字符串之间的相互转换
- ansys--workbench(导入solidworks)受力分析
- 海外手机号码格式校验(PHP版)
- 信息系统安全思维导图
- 案例——蚂蚁金服初探,唯一的金融互联网生态...
- 硬件设计必备,电子元器件高清矢量图
- Spring 面向切面编程(AOP) D5
- Ubuntu18.04 安装Docker 报错:Signed-By 中含有互相冲突的值
- 230个形容人性格的英语词汇
- 安装gin和mod使用
热门文章
- sin30的c语言表达式,c语言sin30怎么写
- web结课作业的源码——HTML+CSS+JavaScript仿oppo官网手机商城(1页)
- 最简单的幻灯片制作,分分钟完成高逼格成片
- 和能力匹配的目标才是战略
- 【光电工程实训】几何光学 小孔成像 光的反射 光的折射 透镜成像
- 服务器 微信报警平台,Zabbix实现微信报警
- Linux /dev/mapper/ubuntu--vg-ubuntu--lv 磁盘空间不足的问题
- 蓝牙HCI command/event/acl/sco格式介绍
- Generating Summaries with Topic Templates and Structured Convolutional Decoders笔记
- 手把手教你做短视频去水印微信小程序(2-首页)