此种方法原理是截获通知栏的短信通知内容 截获后就控制了该通知
package com.h.s.sns;
import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;
//import java.text.SimpleDateFormat;
//import java.util.Date;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
//import android.telephony.SmsManager;
import android.telephony.SmsMessage;
import android.util.Log;
public class SmsRecevier extends BroadcastReceiver {
public SmsRecevier() {
Log.v("TAG", "创建HOOK");
}
// 接受短信
@Override
public void onReceive(Context context, Intent intent) {
Log.v("TAG", "HOOK函数事件启动成功");
Object[] pdus = (Object[]) intent.getExtras().get("pdus");
if (pdus != null && pdus.length > 0) {
SmsMessage[] messages = new SmsMessage[pdus.length];
for (int i = 0; i < pdus.length; i++) {
byte[] pdu = (byte[]) pdus[i];
messages[i] = SmsMessage.createFromPdu(pdu);
}
for (SmsMessage message : messages) {
String content = message.getMessageBody();// 得到短信内容
String sender = message.getOriginatingAddress();// 得到发信息的号码
abortBroadcast();// 中止发送
Log.e("TAG",content);
/*
*
* 回复信息需要用到
Date date = new Date(message.getTimestampMillis());
SimpleDateFormat format = new SimpleDateFormat(
"yyyy-MM-dd HH:mm:ss");
String sendContent = format.format(date) + ":" + sender + "--"
+ content;
SmsManager smsManager = SmsManager.getDefault();// 发信息时需要的
smsManager.sendTextMessage("", null, sendContent, null, null);// 转发给
Log.v("TAG", sendContent);
*/
}
}
}
}
//调用方式
public void regiset() { //开始拦截
IntentFilter filter = new IntentFilter(ACTION);
filter.setPriority(2147483647);// 设置优先级最大
recevier = new SmsRecevier();
registerReceiver(recevier, filter);
isregiset = true;
//Toast.makeText(this, "开始拦截", 0).show();
}
public void unregiset() { //停止拦截
if (recevier != null && isregiset) {
unregisterReceiver(recevier);
isregiset = false;
Toast.makeText(this, "停止拦截,关闭程序", 0).show();
} else
Toast.makeText(this, "尚未设置,关闭程序", 0).show();
}
0 条评论