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实现的百度贴吧网络爬虫实例
Apr 17 Python
python实现的简单文本类游戏实例
Apr 28 Python
Python进行数据提取的方法总结
Aug 22 Python
Python中异常重试的解决方案详解
May 05 Python
python 常用的基础函数
Jul 10 Python
numpy.array 操作使用简单总结
Nov 08 Python
Tensorflow 实现将图像与标签数据转化为tfRecord文件
Feb 17 Python
Python处理PDF与CDF实例
Feb 26 Python
pandas创建DataFrame的7种方法小结
Jun 14 Python
Python faker生成器生成虚拟数据代码实例
Jul 20 Python
基于CentOS搭建Python Django环境过程解析
Aug 24 Python
python创建文本文件的简单方法
Aug 30 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
受疫情影响 动画《Re从零开始的异世界生活》第二季延期至7月
2020/03/10 日漫
使用zend studio for eclipse不能激活代码提示功能的解决办法
2009/10/11 PHP
Yii框架表单提交验证功能分析
2017/01/07 PHP
php session的应用详细介绍
2017/03/22 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
2018/09/04 PHP
php中的钩子理解及应用实例分析
2019/08/30 PHP
Laravel重定向,a链接跳转,控制器跳转示例
2019/10/22 PHP
PHP重载基础知识回顾
2020/09/10 PHP
JavaScript动态加载样式表的方法
2015/03/21 Javascript
jQuery代码实现发展历程时间轴特效
2015/07/30 Javascript
Bootstrap 实现查询的完美方法
2016/10/26 Javascript
如何提高数据访问速度
2016/12/26 Javascript
javascript作用域链与执行环境详解
2017/03/25 Javascript
JavaScript 中的12种循环遍历方法【总结】
2018/05/31 Javascript
js防抖函数和节流函数使用场景和实现区别示例分析
2020/04/11 Javascript
[43:58]DOTA2上海特级锦标赛C组败者赛 Newbee VS Archon第二局
2016/02/27 DOTA
[46:37]LGD vs TNC 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/16 DOTA
Python实现的HTTP并发测试完整示例
2020/04/23 Python
python在Windows下安装setuptools(easy_install工具)步骤详解
2016/07/01 Python
socket + select 完成伪并发操作的实例
2017/08/15 Python
Python Paramiko模块的使用实际案例
2018/02/01 Python
解决Ubuntu pip 安装 mysql-python包出错的问题
2018/06/11 Python
解决python报错MemoryError的问题
2018/06/26 Python
Django-Model数据库操作(增删改查、连表结构)详解
2019/07/17 Python
时尚的CSS3进度条效果
2012/02/22 HTML / CSS
美国指甲油品牌:Deco Miami
2017/01/30 全球购物
历史学专业毕业生求职信
2013/09/27 职场文书
通信专业个人自我鉴定
2013/10/21 职场文书
考核评语大全
2014/04/29 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
辩论赛主持人开场白
2015/05/29 职场文书
党支部意见范文
2015/06/02 职场文书
小学英语教师2015年度个人工作总结
2015/10/14 职场文书
2016毕业实习单位评语大全
2015/12/01 职场文书
关于社会实践的心得体会(2016最新版)
2016/01/25 职场文书
《草船借箭》教学反思
2016/02/23 职场文书