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中声明只包含一个元素的元组数据方法
Aug 25 Python
Python随机生成信用卡卡号的实现方法
May 14 Python
Python中的ctime()方法使用教程
May 22 Python
使用Python3编写抓取网页和只抓网页图片的脚本
Aug 20 Python
Python将多个excel表格合并为一个表格
Feb 22 Python
python超时重新请求解决方案
Oct 21 Python
关于tf.nn.dynamic_rnn返回值详解
Jan 20 Python
python实现批量修改文件名
Mar 23 Python
Pycharm中安装Pygal并使用Pygal模拟掷骰子(推荐)
Apr 08 Python
Python网页解析器使用实例详解
May 30 Python
基于selenium及python实现下拉选项定位select
Jul 22 Python
Matplotlib 折线图plot()所有用法详解
Jul 28 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 远程文件管理,可以给表格排序,遍历目录,时间排序
2009/08/07 PHP
PHP微信API接口类
2016/08/22 PHP
laravel 解决paginate查询多个字段报错的问题
2019/10/22 PHP
php使用pthreads v3多线程实现抓取新浪新闻信息操作示例
2020/02/21 PHP
php实现的证件照换底色功能示例【人像抠图/换背景图】
2020/05/29 PHP
Aster vs Newbee BO5 第一场2.19
2021/03/10 DOTA
JS中eval函数的使用示例
2013/07/21 Javascript
node.js [superAgent] 请求使用示例
2015/03/13 Javascript
js验证框架之RealyEasy验证详解
2016/06/08 Javascript
JavaScript定时器制作弹窗小广告
2017/02/05 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
docker中编译nodejs并使用nginx启动
2017/06/23 NodeJs
react-native DatePicker日期选择组件的实现代码
2017/09/12 Javascript
通过实例了解Javascript柯里化流程
2020/03/03 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
[06:21]2014DOTA2国际邀请赛 庆祝VG首阶段领跑;B叔为挣牛排半夜整理情报
2014/07/13 DOTA
详解常用查找数据结构及算法(Python实现)
2016/12/09 Python
Python编程判断这天是这一年第几天的方法示例
2017/04/18 Python
Python并行分布式框架Celery详解
2018/10/15 Python
python装饰器常见使用方法分析
2019/06/26 Python
Python 硬币兑换问题
2019/07/29 Python
详解pandas.DataFrame.plot() 画图函数
2020/06/14 Python
python可以用哪些数据库
2020/06/22 Python
详解anaconda离线安装pytorchGPU版
2020/09/08 Python
python实现暗通道去雾算法的示例
2020/09/27 Python
Avène雅漾美国官方网站:敏感肌肤护理专家
2016/10/24 全球购物
Dune London官网:英国著名奢华鞋履品牌
2017/11/30 全球购物
How to spawning asynchronous work in J2EE
2016/08/29 面试题
能源工程专业应届生求职信
2014/03/01 职场文书
年终考核实施方案
2014/05/26 职场文书
党的群众路线批评与自我批评发言稿
2014/10/16 职场文书
《爱的教育》读书心得
2014/11/08 职场文书
教师节大会主持词
2015/07/06 职场文书
python使用glob检索文件的操作
2021/05/20 Python
JUnit5常用注解的使用
2021/07/02 Java/Android
vue ref如何获取子组件属性值
2022/03/31 Vue.js