Python携帯電話のショートメッセージを受信するコードの整理
pythonインターフェーステストを解決して携帯電話の検証コード問題を取得する方法:
Androidはメールを受け取ったら、Android.provider.Telephony.SMS_としてActionを送ります。RECEIVEDの放送ですので、私たちはBroadcastReceiverを引き継ぐクラスを書くだけで簡単にメールを傍受できます。
Androidはメールを受け取ったら、Android.provider.Telephony.SMS_としてActionを送ります。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());
}
}
}
}
Android Manifest.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 logsを通じてappkパッケージで切り取られたメッセージ情報を取得し、分析して使用することができます。
__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
インスタンス拡張:
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が携帯電話のショートメッセージを受信したコードの整理の詳細です。Pythonがどのように携帯電話のショートメッセージを受信したかについての資料は他の関連記事に注目してください。