Android系统开发:短信的号码拦截

Android系统开发:短信的号码拦截

Code:Android源码
功能要求:针对某号码,短信的接收与发送的监听与拦截。

设备对该号码发送短信的拦截

实现思路 : 应用发送短信(无论是否是默认短信),在它将该条数据写入/sms/sent/数据库中前,检查是否是我们需要拦截的号码 ,如果是 则return操作, 那么就可以实现对于发送短信的拦截。
Path: frameworks/opt/telephony/src/java/com/android/internal/telephony/SMSDispatcher.java
1)找到内部类 Smstracker
2)修改以下代码

         void writeSentMessage(Context context, int phoneId) {
             String text = (String) mData.get("text");
+            if (mDestAddress != null) {
+                if (mDestAddress.equals(110) || mDestAddress.equals("112")) {
+                Log.d(TAG,"This SMS does not enter the database");
+                return;
+                }
+            }
        ...
       }
        public void updateSentMessageStatus(Context context, int status) {
+            if (mDestAddress != null) {
+                if (mDestAddress.equals(110) || mDestAddress.equals("112")) {
+                Log.d(TAG,"This SMS does not enter the database");
+                return;
+                }
+            }
            ...
       }
       void writeSentMessage(Context context) {
+            if (mDestAddress != null) {
+                if (mDestAddress.equals(110) || mDestAddress.equals("112")) {
+                Log.d(TAG,"This SMS does not enter the database");
+                return;
+                }
+            }
       ...
       }

设备接收短信的拦截

实现思路:在接受到短信之后,将该短信不做任何处理即可,那么我们只要找到接收短信后处理短信的方法,在该方法里对收到的短信号码做出拦截处理就可以了,当然你也可以做一些其他的操作。
Path:packages/apps/Mms/src/com/android/mms/transaction/SmsReceiverService.java
1)找到方法handleSmsReceived
2)修改以下代码

private void handleSmsReceived(Intent intent, int error) {
    SmsMessage[] msgs = Intents.getMessagesFromIntent(intent);
+ 	SmsMessage tempsms = msgs[0];
+	if (tempsms.getOriginatingAddress() != null && !"".equals(tempsms.getOriginatingAddress())){
+	    if (tempsms.getOriginatingAddress().equals("110")) {
+		         Log.d(TAG, "This message is not processed");
+                return;
+            }
+	}
   ...
   }

其实实现的方式有很多 ,Android系统十分的复杂,所以解决问题的方法和思路需要更加直接、更加简单一点,要不然很容易陷入整个代码海里无法自拔。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值