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中asyncore的用法实例
Sep 29 Python
Python数据结构与算法之链表定义与用法实例详解【单链表、循环链表】
Sep 28 Python
python实现简单淘宝秒杀功能
May 03 Python
Python设置matplotlib.plot的坐标轴刻度间隔以及刻度范围
Jun 25 Python
详解python pandas 分组统计的方法
Jul 30 Python
Python 基于wxpy库实现微信添加好友功能(简洁)
Nov 29 Python
深入浅析Python 函数注解与匿名函数
Feb 24 Python
TensorFlow的reshape操作 tf.reshape的实现
Apr 19 Python
Python实现疫情地图可视化
Feb 05 Python
Python Django搭建文件下载服务器的实现
May 10 Python
python用tkinter开发的扫雷游戏
Jun 01 Python
一小时学会TensorFlow2之基本操作2实例代码
Sep 04 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
自己做矿石收音机
2021/03/02 无线电
用Zend Encode编写开发PHP程序
2006/10/09 PHP
php下将图片以二进制存入mysql数据库中并显示的实现代码
2010/05/27 PHP
php 大数据量及海量数据处理算法总结
2011/05/07 PHP
Ping服务的php实现方法,让网站快速被收录
2012/02/04 PHP
PHP生成唯一订单号的方法汇总
2015/04/16 PHP
Laravel 6.2 中添加了可调用容器对象的方法
2019/10/22 PHP
JAVASCRIPT keycode总结
2009/02/04 Javascript
jQuery操作input type=radio的实现代码
2012/06/14 Javascript
为EasyUI的Tab标签添加右键菜单的方法
2012/07/14 Javascript
瀑布流布局代码一例
2014/04/11 Javascript
angularjs基础教程
2014/12/25 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
jquery实现实时改变网页字体大小、字体背景色和颜色的方法
2015/08/05 Javascript
JavaScript模块化之使用requireJS按需加载
2017/04/12 Javascript
Express框架之connect-flash详解
2017/05/31 Javascript
nodejs 子进程正确的打开方式
2017/07/03 NodeJs
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
angular4自定义组件非input元素实现ngModel双向数据绑定的方法
2018/12/28 Javascript
跟老齐学Python之用while来循环
2014/10/02 Python
Python的math模块中的常用数学函数整理
2016/02/04 Python
解决python中使用plot画图,图不显示的问题
2018/07/04 Python
python tkinter实现彩球碰撞屏保
2019/07/30 Python
Python三元运算与lambda表达式实例解析
2019/11/30 Python
Python3.7 读取音频根据文件名生成脚本的代码
2020/04/07 Python
Django Admin 上传文件到七牛云的示例代码
2020/06/20 Python
Python 调用 ES、Solr、Phoenix的示例代码
2020/11/23 Python
CSS3动画之流彩文字效果+图片模糊效果+边框伸展效果实现代码合集
2017/08/18 HTML / CSS
de Bijenkorf比利时官网:荷兰最知名的百货商店
2017/06/29 全球购物
写clone()方法时,通常都有一行代码,是什么?
2012/10/31 面试题
淘宝活动策划方案
2014/02/06 职场文书
母亲节感恩活动记录
2014/03/16 职场文书
2014年大学生职业规划书:未来不是梦,只要勇敢冲!
2014/09/22 职场文书
2014年材料员工作总结
2014/11/19 职场文书
庆祝教师节活动总结
2015/03/23 职场文书
Java Redisson多策略注解限流
2022/09/23 Java/Android