最近在开发中有这样的一个需求,拦截手机中收到的所有短信进行记录,特此记录一下实现代码。
Class<?> mSmsMessageClass = XposedHelpers.findClass("com.android.internal.telephony.gsm.SmsMessage", classLoader);
XposedHelpers.findAndHookMethod(mSmsMessageClass, "createFromPdu", byte[].class,
new XC_MethodHook() {
@Override
protected void afterHookedMethod(MethodHookParam param)
throws Throwable {
// TODO Auto-generated method stub
try {
Object smsMessage = param.getResult();
if (null != smsMessage) {
String from = (String) XposedHelpers.callMethod(smsMessage, "getOriginatingAddress");
String msgBody = (String) XposedHelpers.callMethod(smsMessage, "getMessageBody");
XLog.e("test_sms", "收到短信---->" + "from:" + from + " msgBody:" + msgBody);
}
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
XLog.e("SMS listen error", e.getMessage());
}
}
});
以下为发送短信的实现代码
import android.app.PendingIntent;
import android.content.Context;
import android.content.Intent;
import java.util.ArrayList;
/**
* createTime: 2019/7/16.17:28
* updateTime: 2019/7/16.17:28
* author: singleMan.
* desc: 发送短信的class
*/
public class SMSUtils {
//短信发送状态
public static final String SENT_SMS_ACTION = "SENT_SMS_ACTION";
//短信发送结果
publi