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创建进程fork用法
Jun 04 Python
详解Python的Django框架中的Cookie相关处理
Jul 22 Python
python字符串中的单双引
Feb 16 Python
python 2.7.14安装图文教程
Apr 08 Python
解决Tensorflow使用pip安装后没有model目录的问题
Jun 13 Python
利用Python将文本中的中英文分离方法
Oct 31 Python
对Python定时任务的启动和停止方法详解
Feb 19 Python
numpy.meshgrid()理解(小结)
Aug 01 Python
Django实现CAS+OAuth2的方法示例
Oct 30 Python
Anaconda使用IDLE的实现示例
Sep 23 Python
写一个Python脚本下载哔哩哔哩舞蹈区的所有视频
May 31 Python
python的变量和简单数字类型详解
Sep 15 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
深入PHP购物车模块功能分析(函数讲解,附源码)
2013/06/25 PHP
php中rename函数用法分析
2014/11/15 PHP
php+Mysqli利用事务处理转账问题实例
2015/02/11 PHP
php使用数组填充下拉列表框的方法
2015/03/31 PHP
PHP模糊查询的实现方法(推荐)
2016/09/06 PHP
laravel-admin 实现在指定的相册下添加照片
2019/10/21 PHP
javascript TextArea动态显示剩余字符
2008/10/22 Javascript
javaScript如何生成xmlhttp
2013/12/16 Javascript
深入了解Node.js中的一些特性
2014/09/25 Javascript
Jquery 实现checkbox全选方法
2015/01/28 Javascript
jQuery版本升级踩坑大全
2016/01/12 Javascript
Javascript基础回顾之(一) 类型
2017/01/31 Javascript
vue时间格式化实例代码
2017/06/13 Javascript
JS跳转手机站url的若干注意事项
2017/10/18 Javascript
解决在Bootstrap模糊框中使用WebUploader的问题
2018/03/22 Javascript
vue中Element-ui 输入银行账号每四位加一个空格的实现代码
2018/09/14 Javascript
详解JavaScript的this指向和绑定
2020/09/08 Javascript
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
Python3.x和Python2.x的区别介绍
2013/02/12 Python
python判断字符串编码的简单实现方法(使用chardet)
2016/07/01 Python
python中numpy包使用教程之数组和相关操作详解
2017/07/30 Python
django模型层(model)进行建表、查询与删除的基础教程
2017/11/21 Python
python3.6+django2.0开发一套学员管理系统
2018/03/03 Python
python for 循环获取index索引的方法
2019/02/01 Python
python输入一个水仙花数(三位数) 输出百位十位个位实例
2020/05/03 Python
python如何从键盘获取输入实例
2020/06/18 Python
HTML5 CSS3新的WEB标准和浏览器支持
2009/07/16 HTML / CSS
关于HTML5 Placeholder新标签低版本浏览器下不兼容的问题分析及解决办法
2016/01/27 HTML / CSS
美国儿童珠宝在线零售商:Loveivy
2019/05/22 全球购物
汽车运用工程毕业生自荐信
2013/10/29 职场文书
港澳通行证委托书怎么写
2014/08/02 职场文书
新教师个人总结
2015/02/06 职场文书
导游词之太湖
2019/10/08 职场文书
apache基于端口创建虚拟主机的示例
2021/04/24 Servers
关于Vue中的options选项
2022/03/22 Vue.js
python中pymysql包操作数据库方法
2022/04/19 Python