Python接收手机短信的代码整理


Posted in Python onAugust 02, 2020

python解决接口测试获取手机验证码问题的方法:

Android在收到短信后会发送一个Action为android.provider.Telephony.SMS_RECEIVED的广播,所以我们只需要写个类继承BroadcastReceiver就可以很容易地监听到短信。

package com.example.getsms;
 
import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.text.TextUtils;
import android.util.Log;
 
public class SmsInterceptReceiver extends BroadcastReceiver {
 
private final String TAG = "SmsRec";
 
 private static final String SMS_EXTRA_NAME ="pdus";
 
 @Override
 public void onReceive(Context context, Intent intent) {
 // TODO Auto-generated method stub
 String message = "";
 
 Log.e(TAG, "free message " );
  
  Bundle extras = intent.getExtras();
  if ( extras != null ) {
   try {
   Object[] smsExtra = (Object[]) extras.get( SMS_EXTRA_NAME );
    ContentResolver contentResolver = context.getContentResolver();
     
    Log.e(TAG, "free message " );
    for ( int i = 0; i < smsExtra.length; ++i ) {
     SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);
      
     String body = sms.getMessageBody().toString();
     message += body;
    }
         
    Log.e(TAG, "free message : " + message);
   } catch (Exception e) {
   // TODO: handle exception
   Log.e(TAG, e.getMessage());
   }
  }  
 }
}

AndroidManifest.xml里注册一下接收器:

<receiver android:name=".SmsInterceptReceiver">
   <intent-filter>
   <action android:name="android.provider.Telephony.SMS_RECEIVED" />
   </intent-filter>
  </receiver>

添加权限:

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

python 代码,主要通过adb log来获取apk包所截取的短信信息,然后进行分析后既可使用。

__author__ = 'guozhenhua'
#coding=utf-8
import urllib2
import os,time
#解析短信验证码
os.system("adb logcat -c")
cmd="adb logcat -d |findstr E/SmsRec"
#time.sleep(30);
while(1):
 smscode= os.popen(cmd).read()
 #print smscode
 if (smscode!=""):
  smscode=smscode.split("验证码:")[1].split(",")[0]
  break;
print "验证码是:"+smscode

实例扩展:

package com.example.getsms;


import android.content.BroadcastReceiver;
import android.content.ContentResolver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.text.TextUtils;
import android.util.Log;


public class SmsInterceptReceiver extends BroadcastReceiver {


private final String TAG = "SmsRec";
 
 private static final String SMS_EXTRA_NAME ="pdus";
 
 @Override
 public void onReceive(Context context, Intent intent) {
 // TODO Auto-generated method stub
 String message = "";
 
 Log.e(TAG, "free message " );
 
  Bundle extras = intent.getExtras();
  if ( extras != null ) {
   try {
   Object[] smsExtra = (Object[]) extras.get( SMS_EXTRA_NAME );
    ContentResolver contentResolver = context.getContentResolver();
    
    Log.e(TAG, "free message " );
    for ( int i = 0; i < smsExtra.length; ++i ) {
     SmsMessage sms = SmsMessage.createFromPdu((byte[]) smsExtra[i]);
     
     String body = sms.getMessageBody().toString();
     message += body;
    }
    
    
    Log.e(TAG, "free message : " + message);
   } catch (Exception e) {
   // TODO: handle exception
   Log.e(TAG, e.getMessage());
   }
  } 
  
 }


}

以上就是Python接收手机短信的代码整理的详细内容,更多关于Python怎么接收手机短信的资料请关注三水点靠木其它相关文章!

Python 相关文章推荐
Python发送email的3种方法
Apr 28 Python
Python的Flask框架应用调用Redis队列数据的方法
Jun 06 Python
python 打印对象的所有属性值的方法
Sep 11 Python
浅谈python import引入不同路径下的模块
Jul 11 Python
基于Python的文件类型和字符串详解
Dec 21 Python
一个月入门Python爬虫学习,轻松爬取大规模数据
Jan 03 Python
Python cookbook(数据结构与算法)找到最大或最小的N个元素实现方法示例
Feb 13 Python
python的concat等多种用法详解
Nov 28 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
利用python实现PSO算法优化二元函数
Nov 13 Python
Python PyInstaller库基本使用方法分析
Dec 12 Python
Python改变对象的字符串显示的方法
Aug 01 #Python
Python 如何定义匿名或内联函数
Aug 01 #Python
Python sqlalchemy时间戳及密码管理实现代码详解
Aug 01 #Python
Python如何读写二进制数组数据
Aug 01 #Python
Python将字典转换为XML的方法
Aug 01 #Python
Python Flask异步发送邮件实现方法解析
Aug 01 #Python
Python实现弹球小游戏
Aug 01 #Python
You might like
杏林同学录(五)
2006/10/09 PHP
php checkdate、getdate等日期时间函数操作详解
2010/03/11 PHP
WordPress的主题编写中获取头部模板和底部模板
2015/12/28 PHP
php批量转换文件夹下所有文件编码的函数类
2017/08/06 PHP
javascript 窗口加载蒙板 内嵌网页内容
2010/11/19 Javascript
理解JSON:3分钟课程
2011/10/28 Javascript
JQuery.closest(),parent(),parents()寻找父结点
2012/02/17 Javascript
jQuery带箭头提示框tooltips插件集锦
2014/11/17 Javascript
JS实现表格数据各种搜索功能的方法
2015/03/03 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
jquery实现表格隔行换色效果
2015/11/19 Javascript
第一次接触JS require.js模块化工具
2016/04/17 Javascript
JavaScript 节流函数 Throttle 详解
2016/07/04 Javascript
用nodejs的实现原理和搭建服务器(动态)
2016/08/10 NodeJs
实现点击下箭头变上箭头来回切换的两种方法【推荐】
2016/12/14 Javascript
canvas滤镜效果实现代码
2017/02/06 Javascript
原生JS实现圣旨卷轴展开效果
2017/03/06 Javascript
详解从Node.js的child_process模块来学习父子进程之间的通信
2017/03/27 Javascript
ECMAScript6变量的解构赋值实例详解
2017/09/19 Javascript
React Native日期时间选择组件的示例代码
2018/04/27 Javascript
uni-app从安装到卸载的入门教程
2020/05/15 Javascript
解决vue侦听器watch,调用this时出现undefined的问题
2020/10/30 Javascript
微信小程序实现点击导航标签滚动定位到对应位置
2020/11/19 Javascript
[01:12:40]DOTA2-DPC中国联赛 正赛 DLG vs XG BO3 第三场 1月25日
2021/03/11 DOTA
用Python写飞机大战游戏之pygame入门(4):获取鼠标的位置及运动
2015/11/05 Python
python之django母板页面的使用
2018/07/03 Python
Python提取频域特征知识点浅析
2019/03/04 Python
python绕过图片滑动验证码实现爬取PTA所有题目功能 附源码
2021/01/06 Python
财政局长自荐信范文
2013/12/22 职场文书
五一促销活动总结
2014/07/01 职场文书
党的群众路线教育实践活动个人对照检查材料(医生)
2014/11/05 职场文书
民事起诉状范文
2015/05/19 职场文书
《跨越海峡的生命桥》教学反思
2016/02/18 职场文书
个人售房合同协议书
2016/03/21 职场文书
签证扫盲贴,41个常见签证知识,需要的拿走
2019/08/09 职场文书
css3实现背景图片颜色修改的多种方式
2021/04/13 HTML / CSS