`
wangzhigang2
  • 浏览: 83327 次
  • 性别: Icon_minigender_1
  • 来自: 张家港
社区版块
存档分类
最新评论

拦截短信,不让系统发通知

阅读更多
首先在AndroidManifest.xml配置文件中加入如下代码:
<receiver android:name=".SMSReceiver">
			<intent-filter android:priority="1000">
				<action android:name="android.provider.Telephony.SMS_RECEIVED" />
			</intent-filter>
		</receiver>


然后创建一个继承BroadcastReceiver的类SMSReceiver.java
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.os.Bundle;
import android.telephony.SmsMessage;
import android.util.Log;

public class SMSReceiver extends BroadcastReceiver {

	@Override
	public void onReceive(Context context, Intent intent) {

		Log.i("tag", "onReceive");
		// 第一步、获取短信的内容和发件人
		StringBuilder body = new StringBuilder();// 短信内容
		StringBuilder number = new StringBuilder();// 短信发件人
		Bundle bundle = intent.getExtras();

		if (bundle != null) {
			Object[] myOBJpdus = (Object[]) bundle.get("pdus");
			SmsMessage[] message = new SmsMessage[myOBJpdus.length];
			for (int i = 0; i < myOBJpdus.length; i++) {
				message[i] = SmsMessage.createFromPdu((byte[]) myOBJpdus[i]);
			}
			for (SmsMessage currentMessage : message) {
				body.append(currentMessage.getDisplayMessageBody());
				number.append(currentMessage.getDisplayOriginatingAddress());
			}

			String sms_body = body.toString();
			String sms_number = number.toString();

			Log.i("sms_body", "sms_body=" + sms_body);
			Log.i("sms_number", "sms_number=" + sms_number);

			if (sms_number.contains("+86")) {
				sms_number = sms_number.substring(3);
			}

			// 第二步、确认该短信内容是否满足过滤条件
//			boolean flags_filter = false;
			// for(****){//进行判断,如果满足
			// flags_filter=true}
			//                                             
			// //第三步、取消
			// if(flags_filter){
//调用这一句代码后,系统将不处理当前的广播
			 this.abortBroadcast();
			// }

		}
	}
}

然后运行程序后,用ddms进行发短信。这时后,你就可以捕获到别人发来的短信。
分享到:
评论
2 楼 wangzhigang2 2012-03-05  
你用的什么型号的手机?
1 楼 larry1030 2012-01-20  
模拟器中可以, 真机貌似不行。

相关推荐

Global site tag (gtag.js) - Google Analytics