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)文章
python讀取.mat文件的數(shù)據(jù)及實(shí)例代碼
這篇文章主要介紹了python讀取.mat文件的數(shù)據(jù)的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值 ,需要的朋友可以參考下2019-07-07
Python使用matplotlib和pandas實(shí)現(xiàn)的畫圖操作【經(jīng)典示例】
這篇文章主要介紹了Python使用matplotlib和pandas實(shí)現(xiàn)的畫圖操作,結(jié)合實(shí)例形式分析了Python基于matplotlib和pandas的數(shù)值運(yùn)算與圖形顯示操作相關(guān)實(shí)現(xiàn)技巧,并對部分代碼的圖形顯示進(jìn)行了顯示效果測試,需要的朋友可以參考下2018-06-06
Python爬蟲實(shí)現(xiàn)“盜取”微信好友信息的方法分析
這篇文章主要介紹了Python爬蟲實(shí)現(xiàn)“盜取”微信好友信息的方法,結(jié)合實(shí)例形式分析了Python針對微信數(shù)據(jù)信息爬取的相關(guān)操作技巧,需要的朋友可以參考下2019-09-09
Python使用OpenCV實(shí)現(xiàn)全景拼接功能
全景拼接是將多張圖像拼接成一張全景圖的技術(shù),本文將詳細(xì)介紹如何使用 Python 和 OpenCV 庫進(jìn)行全景拼接,感興趣的小伙伴可以了解一下2024-11-11
Python+Matplotlib實(shí)現(xiàn)繪制三維折線圖
立體圖視覺上層次分明色彩鮮艷,具有很強(qiáng)的視覺沖擊力,讓觀看的人駐景時(shí)間長,留下深刻的印象。今天我們就通過這篇文章來了解如何用python中的matplotlib庫繪制漂亮的三維折線圖吧2023-03-03

