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读写Excel文件方法介绍
Nov 22 Python
python根据开头和结尾字符串获取中间字符串的方法
Mar 26 Python
Django中处理出错页面的方法
Jul 15 Python
Python 的内置字符串方法小结
Mar 15 Python
详解python 字符串和日期之间转换 StringAndDate
May 04 Python
CentOS 7下Python 2.7升级至Python3.6.1的实战教程
Jul 06 Python
python通过TimedRotatingFileHandler按时间切割日志
Jul 17 Python
python GUI库图形界面开发之PyQt5美化窗体与控件(异形窗体)实例
Feb 25 Python
python实现门限回归方式
Feb 29 Python
使用python实现CGI环境搭建过程解析
Apr 28 Python
Python + opencv对拍照得到的图片进行背景去除的实现方法
Nov 18 Python
Python使用海龟绘图实现贪吃蛇游戏
Jun 18 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
php5中类的学习
2008/03/28 PHP
队列在编程中的实际应用(php)
2010/09/04 PHP
PHP日志LOG类定义与用法示例
2018/09/06 PHP
php往mysql中批量插入数据实例教程
2018/12/12 PHP
JavaScript面向对象之体会[总结]
2008/11/13 Javascript
javascript getElementsByName()的用法说明
2009/07/31 Javascript
jquery 文本上下无缝滚动,鼠标放上去就停止 小例子
2013/06/05 Javascript
jQuery实现复选框全选/取消全选/反选及获得选择的值
2014/06/12 Javascript
js日期范围初始化得到前一个月日期的方法
2015/05/05 Javascript
根据user-agent判断蜘蛛代码黑帽跳转代码(js版与php版本)
2015/09/14 Javascript
jQuery中选择器的基础使用教程
2016/05/23 Javascript
javascript之Array 数组对象详解
2016/06/07 Javascript
Javascript json object 与string 相互转换的简单实现
2016/09/27 Javascript
微信小程序 选择器(时间,日期,地区)实例详解
2016/11/16 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
仿ElementUI实现一个Form表单的实现代码
2019/04/23 Javascript
NodeJs生成sitemap站点地图的方法示例
2019/06/11 NodeJs
js实现滑动进度条效果
2020/08/21 Javascript
[00:17]天涯墨客一技能展示
2018/08/25 DOTA
Python实现数通设备端口使用情况监控实例
2015/07/15 Python
在Windows系统上搭建Nginx+Python+MySQL环境的教程
2015/12/25 Python
对django views中 request, response的常用操作详解
2019/07/17 Python
python爬虫-模拟微博登录功能
2019/09/12 Python
Python计算两个矩形重合面积代码实例
2019/09/16 Python
python文件读写代码实例
2019/10/21 Python
python 解决flask 图片在线浏览或者直接下载的问题
2020/01/09 Python
详解Python中pyautogui库的最全使用方法
2020/04/01 Python
Python 存取npy格式数据实例
2020/07/01 Python
CSS3实现千变万化的文字阴影text-shadow效果设计
2016/04/26 HTML / CSS
eharmony澳大利亚:网上约会服务
2020/02/29 全球购物
学校学雷锋活动总结
2014/06/26 职场文书
2014年教师节活动总结
2014/08/29 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
市语委办2016年第十九届“推普周”活动总结
2016/04/05 职场文书
Java中多线程下载图片并压缩能提高效率吗
2021/07/01 Java/Android
Qt自定义Plot实现曲线绘制的详细过程
2021/11/02 Python