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原始套接字编程示例分享
Feb 21 Python
Python字符串处理之count()方法的使用
May 18 Python
python插入排序算法实例分析
Jul 03 Python
python制作最美应用的爬虫
Oct 28 Python
使用Python抓取豆瓣影评数据的方法
Oct 17 Python
详解python中的Turtle函数库
Nov 19 Python
Python实现E-Mail收集插件实例教程
Feb 06 Python
详解Python是如何实现issubclass的
Jul 24 Python
python实现银行实战系统
Feb 26 Python
浅析Python 条件控制语句
Jul 15 Python
基于python tkinter的点名小程序功能的实例代码
Aug 22 Python
2021年值得向Python开发者推荐的VS Code扩展插件
Jan 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
xml+php动态载入与分页
2006/10/09 PHP
如何用PHP实现插入排序?
2013/04/10 PHP
解析PHP多种序列化与反序列化的方法
2013/06/06 PHP
php实现html标签闭合检测与修复方法
2015/07/09 PHP
详解在PHP的Yii框架中使用行为Behaviors的方法
2016/03/18 PHP
全面解析PHP验证码的实现原理 附php验证码小案例
2016/08/17 PHP
表单提交验证类
2006/07/14 Javascript
javascript入门基础之私有变量
2010/02/23 Javascript
JavaScript类和继承 this属性使用说明
2010/09/03 Javascript
js arguments对象应用介绍
2012/11/28 Javascript
JavaScript控制两个列表框listbox左右交换数据的方法
2015/03/18 Javascript
JavaScript DOM基础
2015/04/13 Javascript
jQuery选择器基础入门教程
2016/05/10 Javascript
轻松掌握JavaScript中介者模式
2016/08/26 Javascript
JS常用倒计时代码实例总结
2017/02/07 Javascript
浅谈vue-lazyload实现的详细过程
2017/08/22 Javascript
nodejs 简单实现动态html的方法
2018/05/12 NodeJs
微信小程序多音频播放进度条问题
2018/08/28 Javascript
vue项目实现表单登录页保存账号和密码到cookie功能
2018/08/31 Javascript
vue自定义tap指令及tap事件的实现
2018/09/18 Javascript
使用JavaScript破解web
2018/09/28 Javascript
微信小程序用户拒绝授权的处理方法详解
2019/09/20 Javascript
[34:10]Secret vs VG 2019国际邀请赛淘汰赛 败者组 BO3 第二场 8.24
2019/09/10 DOTA
Python 元类使用说明
2009/12/18 Python
Python with用法实例
2015/04/14 Python
python实现对求解最长回文子串的动态规划算法
2018/06/02 Python
带你认识Django
2019/01/15 Python
Python3 把一个列表按指定数目分成多个列表的方式
2019/12/25 Python
详解python模块pychartdir安装及导入问题
2020/10/22 Python
GAZMAN官网:澳大利亚领先的男装品牌
2019/12/19 全球购物
SK-II神仙水美国官网:SK-II美国
2020/02/25 全球购物
小区门卫岗位职责范本
2014/08/24 职场文书
电子商务实训报告总结
2014/11/05 职场文书
建筑安全员岗位职责
2015/02/15 职场文书
关于食品安全的演讲稿范文(三篇)
2019/10/21 职场文书
Python3.8官网文档之类的基础语法阅读
2021/09/04 Python