Python接收手機(jī)短信的代碼整理
python解決接口測(cè)試獲取手機(jī)驗(yàn)證碼問(wèn)題的方法:
Android在收到短信后會(huì)發(fā)送一個(gè)Action為android.provider.Telephony.SMS_RECEIVED的廣播,所以我們只需要寫(xiě)個(gè)類(lèi)繼承BroadcastReceiver就可以很容易地監(jiān)聽(tīng)到短信。
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里注冊(cè)一下接收器:
<receiver android:name='.SmsInterceptReceiver'> <intent-filter> <action android:name='android.provider.Telephony.SMS_RECEIVED' /> </intent-filter> </receiver>
添加權(quán)限:
<uses-permission android:name='android.permission.RECEIVE_SMS'/>
python 代碼,主要通過(guò)adb log來(lái)獲取apk包所截取的短信信息,然后進(jìn)行分析后既可使用。
__author__ = ’guozhenhua’#coding=utf-8import urllib2import os,time#解析短信驗(yàn)證碼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('驗(yàn)證碼:')[1].split(',')[0] break;print '驗(yàn)證碼是:'+smscode
實(shí)例擴(kuò)展:
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接收手機(jī)短信的代碼整理的詳細(xì)內(nèi)容,更多關(guān)于Python怎么接收手機(jī)短信的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!
相關(guān)文章:
1. IntelliJ IDEA安裝插件的方法步驟2. ASP.NET MVC使用typeahead.js實(shí)現(xiàn)輸入智能提示功能3. html小技巧之td,div標(biāo)簽里內(nèi)容不換行4. Python .py生成.pyd文件并打包.exe 的注意事項(xiàng)說(shuō)明5. ThinkPHP5中如何使用redis6. 每日六道java新手入門(mén)面試題,通往自由的道路7. python 中 .py文件 轉(zhuǎn) .pyd文件的操作8. Java IO流之節(jié)點(diǎn)流與字符流的相關(guān)知識(shí)總結(jié)9. XPath入門(mén) - XSL教程 - 310. python2.7使用scapy發(fā)送syn實(shí)例
