Android需要添加的相关权限

 <uses-permission android:name="android.permission.RECEIVE_SMS"></uses-permission>
<uses-permission android:name="android.permission.READ_SMS"></uses-permission>

相关的代码:

 package com.dongdongsongcan.app;

 import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.SmsMessage; import com.su.dolphin.utils.LogUtil; import java.util.ArrayList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern; public class SMSReceiver extends BroadcastReceiver { public interface ISMSListener {
public void onSmsReceive(String verifyCode);
} private static ISMSListener mSMSListener; public SMSReceiver(ISMSListener ismsListener) {
mSMSListener = ismsListener;
} public static final String TAG = "ImiChatSMSReceiver"; //android.provider.Telephony.Sms.Intents public static final String SMS_RECEIVED_ACTION = "android.provider.Telephony.SMS_RECEIVED"; @Override public void onReceive(Context context, Intent intent) {
LogUtil.d(">>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>");
if (intent.getAction().equals(SMS_RECEIVED_ACTION)) { SmsMessage[] messages = getMessagesFromIntent(intent); for (SmsMessage message : messages) { // LogUtil.d(message.getOriginatingAddress() + " : " +
//
// message.getDisplayOriginatingAddress() + " : " +
//
// message.getDisplayMessageBody() + " : " +
//
// message.getTimestampMillis()); String msg = message.getDisplayMessageBody();
LogUtil.d("MSG: " + msg);
String verifyCode = null;
Pattern p = Pattern.compile("\\d{4}");
Matcher m = p.matcher(msg);
while (m.find()) {
verifyCode = m.group();
break;
}
LogUtil.d("verifyCode " + verifyCode);
if (mSMSListener != null) {
mSMSListener.onSmsReceive(verifyCode);
}
} } } public final SmsMessage[] getMessagesFromIntent(Intent intent) { Object[] messages = (Object[]) intent.getSerializableExtra("pdus"); byte[][] pduObjs = new byte[messages.length][]; for (int i = 0; i < messages.length; i++) { pduObjs[i] = (byte[]) messages[i]; } byte[][] pdus = new byte[pduObjs.length][]; int pduCount = pdus.length; SmsMessage[] msgs = new SmsMessage[pduCount]; for (int i = 0; i < pduCount; i++) { pdus[i] = pduObjs[i]; msgs[i] = SmsMessage.createFromPdu(pdus[i]); } return msgs; } }

最新文章

  1. 微信调用照相拍照等 js 接口的权限配置 和 照片上传和下载实现
  2. Hubilder快捷键
  3. 省市区县镇级联数据JS版
  4. Centos7安装Xmind
  5. phpcms v9 模板标签说明整理
  6. nyoj 1185 最大最小值【线段树最大值最小值维护】
  7. .Net资源文件全球化
  8. SQL Server 数据库游标选项
  9. html5 canvas 运行起来绝对让你震撼!
  10. C++ Primer注意事项11_运算符重载_算术/关系运算符_下标运算符
  11. 用bat启动sqlserver服务
  12. c#实现Google账号登入授权(OAuth 2.0)并获取个人信息
  13. C语言字符串的常见特殊操作(除了string.c实现的那些接口)
  14. Markdown公式编辑学习笔记
  15. 《CLR via C#》读书笔记 之 泛型
  16. nyoj-1250-exgcd
  17. input同名
  18. 【python】正则表达式-正则表达式常见的字符和符号表
  19. 【Java并发编程】之六:Runnable和Thread实现多线程的区别
  20. 使用Jasperreporter生成入库出库单打印等报表操作

热门文章

  1. oracle监听理解 命名理解
  2. Linux下环境变量设置技巧,不用/etc/profile而是在/etc/profile.d目录下新建特定的shell文件来设置
  3. 在一台服务器上搭建多个项目的SVN
  4. 【Go入门教程4】变量(var),常量(const),内置基础类型(Boolean、数值 byte,int,rune、字符串、错误类型),分组,iota枚举,array(数值),slice(切片),map(字典),make/new操作,零值
  5. 使用jdbc的缺点
  6. 【liunx】使用xshell连接虚拟机上的CentOS 7,使用xhell连接本地虚拟机上的Ubuntu, 获取本地虚拟机中CentOS 7的IP地址,获取本地虚拟机中Ubuntu 的IP地址,Ubuntu开启22端口
  7. Li的前期工作Level_Set_Evolution_Without_Re-initialization_A_New_Variational_Formulation
  8. UCN(User-Centric Networks,用户中心网络)
  9. Objective-C:ARC自动释放对象内存
  10. C语言:用二进制方式向文件读写一组数据(fread、fwrite)