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 相关文章推荐
vc6编写python扩展的方法分享
Jan 17 Python
python求pi的方法
Oct 08 Python
python使用pil生成缩略图的方法
Mar 26 Python
Python字符串详细介绍
May 09 Python
python获得一个月有多少天的方法
Jun 04 Python
python实现的系统实用log类实例
Jun 30 Python
使用python对文件中的单词进行提取的方法示例
Dec 21 Python
Python Django view 两种return的实现方式
Mar 16 Python
详解用Pytest+Allure生成漂亮的HTML图形化测试报告
Mar 31 Python
解决Pycharm 中遇到Unresolved reference 'sklearn'的问题
Jul 13 Python
vue.js刷新当前页面的实例讲解
Dec 29 Python
Pandas自定义选项option设置
Jul 25 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
source.php查看源文件
2006/12/09 PHP
php内存缓存实现方法
2015/01/24 PHP
基于PHP+jQuery+MySql实现红蓝(顶踩)投票代码
2015/08/25 PHP
ThinkPHP实现的rsa非对称加密类示例
2018/05/29 PHP
jquery ui dialog里调用datepicker的问题
2009/08/06 Javascript
JavaScript与Div对层定位和移动获得坐标的实现代码
2010/09/08 Javascript
js实现点击按钮后给Div图层设置随机背景颜色的方法
2015/05/06 Javascript
jQuery自动添加表单项的方法
2015/07/13 Javascript
javascript中SetInterval与setTimeout的定时器用法
2015/08/24 Javascript
小心!AngularJS结合RequireJS做文件合并压缩的那些坑
2016/01/09 Javascript
浅谈jquery点击label触发2次的问题
2016/06/12 Javascript
浅谈js和css内联外联注意事项
2016/06/30 Javascript
微信支付 JS API支付接口详解
2016/07/11 Javascript
基于Vue实现可以拖拽的树形表格实例详解
2018/10/18 Javascript
微信小程序中的video视频实现 自定义播放按钮、封面图、视频封面上文案
2020/01/02 Javascript
vue将文件/图片批量打包下载zip的教程
2020/10/21 Javascript
React Ant Design树形表格的复杂增删改操作
2020/11/02 Javascript
JS中箭头函数与this的写法和理解
2021/01/14 Javascript
python编写爬虫小程序
2015/05/14 Python
在Python中操作列表之list.extend()方法的使用
2015/05/20 Python
Python中字符串的修改及传参详解
2016/11/30 Python
Python同步遍历多个列表的示例
2019/02/19 Python
Python数据库封装实现代码示例解析
2020/09/05 Python
Python非单向递归函数如何返回全部结果
2020/12/18 Python
html5借用repeating-linear-gradient实现一把刻度尺(ruler)
2019/09/09 HTML / CSS
美国传奇滑手Paul Rodriguez创办的街头滑板品牌:Primitive Skateboarding
2019/10/29 全球购物
skyn ICELAND官网:冰岛成分天然护肤品
2020/08/24 全球购物
直接有效的自我评价
2014/01/11 职场文书
优秀经理获奖感言
2014/03/04 职场文书
学习十八大的心得体会
2014/09/01 职场文书
优秀教师自我评价范文
2014/09/27 职场文书
工作迟到检讨书范文
2015/05/06 职场文书
总经理年会致辞
2015/07/29 职场文书
个人售房合同协议书
2016/03/21 职场文书
详解Python+OpenCV进行基础的图像操作
2022/02/15 Python
Java8 CompletableFuture 异步回调
2022/04/28 Java/Android