短信,电话拦截的优先级问题

来源:互联网 发布:两个json对象合并 编辑:程序博客网 时间:2024/05/17 23:03

   这学期选了网络安全与技术的课,最后要交一个与安全有关的大作业,由于安卓正火,就想做一个类似360的手机拦截的应用,开始以为很简单,但是越到后面,问题越多。一个典型的就是,在模拟器上应用能拦截电话和短信,可是到了真机上,就只能拦截电话,不能拦截短信。

开始我以为是优先级的问题,查看的android的文档,

The value must be an integer, such as "100". Higher numbers have a higher priority. The default value is 0. The value must be greater than -1000 and less than 1000.

基本意思是,优先级在-1000到1000之间,值越大优先级越高,默认值是0

我也照做了,还是不行,于是反编译了几个应用,发现他们的优先级是2147483647,这个最大的int数,而且它们的manifest中没有关于短信的broadcast,上网查了下,有人说,动态注册的优先级比静态注册的注册优先级高,所以想写拦截软件的思路是:

注册一个broadcast,让他开开机启动,启动后,再启动一个Service,在这个service里面动态注册短息的广播接收器,注意优先级的设置

代码:

开启启动的Recevier1

<receiver android:name=".Receiver1" >       <intent-filter android:priority="2147483647" >             <action android:name="android.intent.action.BOOT_COMPLETED" />  <--!开启启动-->     </intent-filter>  </receiver>  
package com.broadcast;import android.content.BroadcastReceiver;import android.content.Context;import android.content.Intent;public class Receiver1 extends BroadcastReceiver{@Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stub
Intent intent2 = new Intent();  //启动一个Service    intent2.setClass(context, SmsService.class);      context.startService(intent2);  }}

public class SmsService extends Service {      private static final String ACTION = "android.provider.Telephony.SMS_RECEIVED";        @Override      public IBinder onBind(Intent intent) {          // TODO Auto-generated method stub          return null;      }        @Override      public void onCreate() {          IntentFilter filter = new IntentFilter(ACTION);  //添加过滤器        filter.setPriority(2147483647);  //设置有优先级        MyBrocast myService = new MyBrocast();          registerReceiver(myService, filter);  //注册广播    }        private class MyBrocast extends BroadcastReceiver {            @Override          public void onReceive(Context context, Intent intent) {              System.out.println("receiver message --->>>>");              abortBroadcast();  //取消广播        }        }    }  
然后就可以成功拦截短信


原创粉丝点击