各位用户为了找寻关于Python接收手机短信的代码整理的资料费劲了很多周折。这里教程网为您整理了关于Python接收手机短信的代码整理的相关资料,仅供查阅,以下为您介绍关于Python接收手机短信的代码整理的详细内容

python解决接口测试获取手机验证码问题的方法:

Android在收到短信后会发送一个Action为android.provider.Telephony.SMS_RECEIVED的广播,所以我们只需要写个类继承BroadcastReceiver就可以很容易地监听到短信。

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 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里注册一下接收器:

? 1 2 3 4 5 <receiver android:name=".SmsInterceptReceiver">   <intent-filter>   <action android:name="android.provider.Telephony.SMS_RECEIVED" />   </intent-filter>  </receiver>

添加权限:

? 1 <uses-permission android:name="android.permission.RECEIVE_SMS"/>

python 代码,主要通过adb log来获取apk包所截取的短信信息,然后进行分析后既可使用。

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 __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

实例扩展:

? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 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怎么接收手机短信的资料请关注服务器之家其它相关文章!

原文链接:https://www.py.cn/faq/python/18648.html