Python接收手機(jī)短信的代碼整理
python解決接口測試獲取手機(jī)驗(yàn)證碼問題的方法:
Android在收到短信后會發(fā)送一個Action為android.provider.Telephony.SMS_RECEIVED的廣播,所以我們只需要寫個類繼承BroadcastReceiver就可以很容易地監(jiān)聽到短信。
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>
添加權(quán)限:
<uses-permission android:name="android.permission.RECEIVE_SMS"/>
python 代碼,主要通過adb log來獲取apk包所截取的短信信息,然后進(jìn)行分析后既可使用。
__author__ = 'guozhenhua' #coding=utf-8 import urllib2 import 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ī)短信的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
分享15?個python中的?Scikit-Learn?技能
這篇文章主要介紹了分享15?個python中的?Scikit-Learn?技能,Scikit-Learn?是一個非常棒的?python?庫,用于實(shí)現(xiàn)機(jī)器學(xué)習(xí)模型和統(tǒng)計(jì)建模,有降維、特征選擇、特征提取、集成技術(shù)等特征,下文相關(guān)內(nèi)容需要的朋友可以參考一下2022-03-03Python中LSTM回歸神經(jīng)網(wǎng)絡(luò)時間序列預(yù)測詳情
這篇文章主要介紹了Python中LSTM回歸神經(jīng)網(wǎng)絡(luò)時間序列預(yù)測詳情,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價值,需要的朋友可以參考一下2022-07-07python實(shí)現(xiàn)在cmd窗口顯示彩色文字
今天小編就為大家分享一篇python實(shí)現(xiàn)在cmd窗口顯示彩色文字,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-06-06使用Python進(jìn)行二進(jìn)制文件讀寫的簡單方法(推薦)
下面小編就為大家?guī)硪黄褂肞ython進(jìn)行二進(jìn)制文件讀寫的簡單方法(推薦)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-09-09python3操作微信itchat實(shí)現(xiàn)發(fā)送圖片
這篇文章主要為大家詳細(xì)介紹了python3操作微信itchat實(shí)現(xiàn)發(fā)送圖片,具有一定的參考價值,感興趣的小伙伴們可以參考一下2018-02-02Flask實(shí)現(xiàn)異步執(zhí)行任務(wù)
在一些開發(fā)中,可能會遇到需要長時間處理的任務(wù),此時就需要使用異步的方式來實(shí)現(xiàn),本文就介紹了Flask實(shí)現(xiàn)異步執(zhí)行任務(wù)的方法,感興趣的可以了解一下2021-05-05