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 多线程实例详解
Mar 25 Python
利用django如何解析用户上传的excel文件
Jul 24 Python
在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南
Jan 30 Python
Linux下python与C++使用dlib实现人脸检测
Jun 29 Python
Django实现CAS+OAuth2的方法示例
Oct 30 Python
pytorch 图像预处理之减去均值,除以方差的实例
Jan 02 Python
pytorch实现线性拟合方式
Jan 15 Python
TensorBoard 计算图的查看方式
Feb 15 Python
python简单实现最大似然估计&amp;scipy库的使用详解
Apr 15 Python
Python hashlib模块的使用示例
Oct 09 Python
python异常中else的实例用法
Jun 15 Python
Python django中如何使用restful框架
Jun 23 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
使用 php4 加速 web 传输
2006/10/09 PHP
php实现按文件名搜索文件的远程文件查找器
2014/05/10 PHP
ThinkPHP模板范围判断输出In标签与Range标签用法详解
2014/06/30 PHP
Laravel 4.2 中队列服务(queue)使用感受
2014/10/30 PHP
php实现学生管理系统
2020/03/21 PHP
JSON 客户端和服务器端的格式转换
2009/08/27 Javascript
用Javascript同时提交多个Web表单的方法
2009/12/26 Javascript
javascript+css 网页每次加载不同样式的实现方法
2009/12/27 Javascript
jQuery的load()方法及其回调函数用法实例
2015/03/25 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
jquery衣服颜色选取插件效果代码分享
2015/08/28 Javascript
AngularJS页面访问时出现页面闪烁问题的解决
2016/03/06 Javascript
详解AngularJS中ng-src指令的使用
2016/09/07 Javascript
js实现下拉框效果(select)
2017/03/28 Javascript
在vue中使用jointjs的方法
2018/03/24 Javascript
详解Angular5 路由传参的3种方法
2018/04/28 Javascript
vue单页应用的内存泄露定位和修复问题小结
2019/08/02 Javascript
JS实现关闭小广告特效
2021/01/29 Javascript
Vue.js 中制作自定义选择组件的代码附演示demo
2020/02/28 Javascript
Vue CLI4 Vue.config.js标准配置(最全注释)
2020/06/05 Javascript
[01:02:07]Liquid vs Newbee 2019国际邀请赛小组赛 BO2 第一场 8.15
2019/08/16 DOTA
详尽讲述用Python的Django框架测试驱动开发的教程
2015/04/22 Python
Pthon批量处理将pdb文件生成dssp文件
2015/06/21 Python
python 解决动态的定义变量名,并给其赋值的方法(大数据处理)
2018/11/10 Python
python MD5加密的示例
2020/10/19 Python
Python-split()函数实例用法讲解
2020/12/18 Python
Ellesse英国官网:意大利高级运动品牌
2019/07/23 全球购物
介绍一下write命令
2012/09/24 面试题
改作风抓落实促发展心得体会
2014/09/10 职场文书
离婚代理词范文
2015/05/23 职场文书
2016年秋季新学期致辞
2015/07/30 职场文书
劳动模范获奖感言
2015/07/31 职场文书
JS异步堆栈追踪之为什么await胜过Promise
2021/04/28 Javascript
MySQL 重命名表的操作方法及注意事项
2021/05/21 MySQL
python 如何用terminal输入参数
2021/05/25 Python
美国运营商 T-Mobile 以 117.83Mb/s 的速度排第一位
2022/04/21 数码科技