各位用户为了找寻关于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 46package 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 53package 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