利用BroadCastReceiver读取短信
来源:互联网 发布:mac怎么给手机换铃声 编辑:程序博客网 时间:2024/05/29 03:21
案例2:读取短信验证码,自动填写
注意: * 1.短信发送到手机上是以单元格式的形式发送到手机上 * 2.SmsMessage是一个短信的抽象类,封装了包括一些关于短信的信息 * (发送人的手机号,短信内容等) 步骤: (1).创建一个广播(写一个类继承BroadCastReceiver,实现onReceive(Context context, Intent intent)方法) (2).在清单文件中注册receiver,action为短信的action <receiver android:name=".MyBroadCastReceiver"> <intent-filter> <!--手机短信的action--> <action android:name="android.provider.Telephony.SMS_RECEIVED"/> </intent-filter> </receiver> 读取短信需要添加权限: <uses-permission android:name="android.permission.RECEIVE_SMS"/> (3).在onReceive()中实现短信的逻辑代码: //收到短信后进行逻辑处理 @Override public void onReceive(Context context, Intent intent) { Bundle bundle = intent.getExtras(); if (bundle != null) { //pdus 数据格式单元,原始数据需要转化成SMSMessage[]数组,才能获得里面的具体信息 Object[] pdus = (Object[]) bundle.get("pdus"); //创建长度为数据格式长度的短信数组 SmsMessage[] smsMessages = new SmsMessage[pdus.length]; for (int i = 0; i < pdus.length; i++) { //将一个数据单元转换成一个短信对象 smsMessages[i] = SmsMessage.createFromPdu((byte[]) pdus[i]); } for (int n = 0; n < pdus.length; n++) { //获得短信的地址 String address = smsMessages[n].getDisplayOriginatingAddress(); //短信的内容 String content = smsMessages[n].getDisplayMessageBody(); //匹配是否有短信验证码 String result = getyzm(content,4); Toast.makeText(context,result, Toast.LENGTH_SHORT).show(); } } } /** * 从短信字符窜提取验证码 * * @param body 短信内容 * @param YZMLENGTH 验证码的长度 一般6位或者4位 * @return 接取出来的验证码 */ public static String getyzm(String body, int YZMLENGTH) { // 首先([a-zA-Z0-9]{YZMLENGTH})是得到一个连续的六位数字字母组合 // (?<![a-zA-Z0-9])负向断言([0-9]{YZMLENGTH})前面不能有数字 // (?![a-zA-Z0-9])断言([0-9]{YZMLENGTH})后面不能有数字出现 // 获得数字字母组合 // Pattern p = Pattern.compile("(?<![a-zA-Z0-9])([a-zA-Z0-9]{" + YZMLENGTH + "})(?![a-zA-Z0-9])"); // 获得纯数字 Pattern p = Pattern.compile("(?<![0-9])([0-9]{" + YZMLENGTH + "})(?![0-9])"); Matcher m = p.matcher(body); if (m.find()) { System.out.println(m.group()); return m.group(0); } return null; }
0 0
- 利用BroadCastReceiver读取短信
- 利用BroadcastReceiver监听短信
- Android利用BroadcastReceiver实现短信监听
- Android利用BroadcastReceiver实现短信监听
- 利用广播机制(BroadcastReceiver)窃听短信
- 利用广播读取即时短信
- Android短信监听(一)——利用BroadcastReceiver实现短信监听
- Android -- 利用ContentProvider 读取和写入短信
- Android 利用ContentProvider读取短信内容
- 通过BroadcastReceiver拦截短信
- 通过BroadcastReceiver拦截短信
- BroadcastReceiver实现短信拦截
- 使用broadcastreceiver监听短信
- BroadcastReceiver实现短信监听
- Android-拦截短信(BroadcastReceiver)
- demo短信拦截---BroadcastReceiver
- 短信提醒 BroadcastReceiver
- android接受短信的BroadcastReceiver
- 二分查找算法
- leetcode第20题——*Valid Parentheses
- 读算法导论日志:插入排序
- 利用BroadCastReceiver做网络判断
- HTTP协议的主要特征
- 利用BroadCastReceiver读取短信
- [leetcode] Divide and Conquer
- BroadCastReceiver
- POJ--2718 Smallest Difference
- 【Github教程】史上最全github使用方法:github入门到精通
- 在win8下安装centos7报错解决
- 小计,困扰了一天的图片内存问题
- MySql的学习记录-持续更新
- 折腾人的Notification