您的位置:首页技术文章
文章详情页

Python接收手机短信的代码整理

【字号: 日期:2022-07-15 13:40:25浏览:3作者:猪猪

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-8import urllib2import 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 编程
相关文章: