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 11 Python
Python去除列表中重复元素的方法
Mar 20 Python
Python脚本实时处理log文件的方法
Nov 21 Python
python+opencv识别图片中的圆形
Mar 25 Python
详解python实现识别手写MNIST数字集的程序
Aug 03 Python
python+opencv实现摄像头调用的方法
Jun 22 Python
用python爬取历史天气数据的方法示例
Dec 30 Python
Anaconda+Pycharm环境下的PyTorch配置方法
Mar 13 Python
python 3.8.3 安装配置图文教程
May 21 Python
Python djanjo之csrf防跨站攻击实验过程
May 14 Python
Python预测分词的实现
Jun 18 Python
Python实现为PDF去除水印的示例代码
Apr 03 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
神族 PROTOSS 概述
2020/03/14 星际争霸
php数组保存文本与文本反编成数组实例
2014/11/13 PHP
Zend Framework教程之请求对象的封装Zend_Controller_Request实例详解
2016/03/07 PHP
070823更新的一个[消息提示框]组件 兼容ie7
2007/08/29 Javascript
javascript document.referrer 用法
2009/04/30 Javascript
JQuery仿小米手机抢购页面倒计时效果
2014/12/16 Javascript
Jquery树插件zTree用法入门教程
2015/02/17 Javascript
JavaScript原生对象之Number对象的属性和方法详解
2015/03/13 Javascript
jQuery实现图片与文字描述左右滑动自动切换的方法
2015/07/27 Javascript
javascript html5实现表单验证
2016/03/01 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
Vue.js图片预览插件使用详解
2018/08/27 Javascript
vue跳转方式(打开新页面)及传参操作示例
2020/01/26 Javascript
[05:28]刀塔密之一:团结则存
2014/07/03 DOTA
python判断、获取一张图片主色调的2个实例
2014/04/10 Python
Python中的魔法方法深入理解
2014/07/09 Python
对python同一个文件夹里面不同.py文件的交叉引用方法详解
2018/12/15 Python
Python实现简单层次聚类算法以及可视化
2019/03/18 Python
Golang GBK转UTF-8的例子
2019/08/26 Python
python excel转换csv代码实例
2019/08/26 Python
python 使用opencv 把视频分割成图片示例
2019/12/12 Python
python logging模块的使用
2020/09/07 Python
python装饰器代码深入讲解
2021/03/01 Python
CSS3中各种颜色属性的使用教程
2016/05/17 HTML / CSS
css3 column实现卡片瀑布流布局的示例代码
2018/06/22 HTML / CSS
英国知名奢侈品包包品牌:Milli Millu
2016/12/22 全球购物
英国独特礼物想法和个性化礼物网站:notonthehighstreet.com
2018/04/16 全球购物
static函数与普通函数有什么区别
2015/12/25 面试题
北京捷通华声语音技术有限公司Java软件工程师笔试题
2012/04/10 面试题
简历的自我评价
2014/02/03 职场文书
市场营销专业毕业生求职信
2014/07/21 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
2015年优质护理服务工作总结
2015/04/08 职场文书
消防安全主题班会
2015/08/12 职场文书
python爬取企查查企业信息之selenium自动模拟登录企查查
2021/04/08 Python