最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • Python怎么接收手机短信?

    正文概述    2020-10-19   316

    Python怎么接收手机短信?

    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

    更多Python知识请关注Python自学网


    起源地下载网 » Python怎么接收手机短信?

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元