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中处理字符串的相关的len()方法的使用简介
May 19 Python
在Python的Flask框架中构建Web表单的教程
Jun 04 Python
深入解析Python中的descriptor描述器的作用及用法
Jun 27 Python
利用numpy+matplotlib绘图的基本操作教程
May 03 Python
python itchat实现微信好友头像拼接图的示例代码
Aug 14 Python
使用python采集脚本之家电子书资源并自动下载到本地的实例脚本
Oct 23 Python
PyQT5 QTableView显示绑定数据的实例详解
Jun 25 Python
python 实现12bit灰度图像映射到8bit显示的方法
Jul 08 Python
使用Python脚本从文件读取数据代码实例
Jan 19 Python
Python爬虫爬取微信朋友圈
Aug 06 Python
PyTorch中Tensor的数据类型和运算的使用
Sep 03 Python
python基础之文件操作
Oct 24 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
全国中波电台频率表
2020/03/11 无线电
PHP 面向对象实现代码
2009/11/11 PHP
利用中国天气预报接口实现简单天气预报
2014/01/20 PHP
利用JQuery为搜索栏增加tag提示
2009/06/22 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
2013/04/08 Javascript
自动设置iframe大小的jQuery代码
2013/09/11 Javascript
Array栈方法和队列方法的特点说明
2014/01/24 Javascript
jQuery中:enabled选择器用法实例
2015/01/04 Javascript
jQuery制作拼图小游戏
2015/01/12 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
jQuery+pjax简单示例汇总
2017/04/21 jQuery
bootstrap是什么_动力节点Java学院整理
2017/07/14 Javascript
把JavaScript代码改成ES6语法不完全指南(分享)
2017/09/10 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
vue.js的computed,filter,get,set的用法及区别详解
2018/03/08 Javascript
VUE2.0中Jsonp的使用方法
2018/05/22 Javascript
electron + vue项目实现打印小票功能及实现代码
2018/11/25 Javascript
vue样式穿透 ::v-deep的具体使用
2020/06/04 Javascript
vue 点击其他区域关闭自定义div操作
2020/07/17 Javascript
[02:21]DOTA2英雄基础教程 蝙蝠骑士
2013/12/16 DOTA
解读python logging模块的使用方法
2018/04/17 Python
Python 实现字符串中指定位置插入一个字符
2018/05/02 Python
pygame游戏之旅 按钮上添加文字的方法
2018/11/21 Python
Python爬虫设置代理IP(图文)
2018/12/23 Python
Python设计模式之策略模式实例详解
2019/01/21 Python
python安装gdal的两种方法
2019/10/29 Python
python_array[0][0]与array[0,0]的区别详解
2020/02/18 Python
Django 解决model 反向引用中的related_name问题
2020/05/19 Python
Python pymysql模块安装并操作过程解析
2020/10/13 Python
python Gabor滤波器讲解
2020/10/26 Python
conda安装tensorflow和conda常用命令小结
2021/02/20 Python
美国CVS药店官网:CVS Pharmacy
2018/07/26 全球购物
优秀老师事迹材料
2014/02/05 职场文书
新农村建设标语
2014/06/24 职场文书
学校运动会通讯稿
2015/07/18 职场文书
2019年度政务公开考核工作总结模板
2019/11/11 职场文书