Android实例-手机安全卫士(三十八)-代码中注册BroadcastReceiver

一、目标

  1、在代码中注册BroadcastReceiver,使其随着server运行而运行(即Receiver的生命周期与service的生命周期一致,当service创建而创建并注册Receiver,销毁的注销);

  2、随着服务的销毁而注销Receiver;

二、代码实现

  1、将第三十七节中创建的用于接收去电的广播接收者类(OutCallReceiver)作为一个内部类放在需要注册的代码中。本例中为“显示来电号码归属地”服务类(ShowComingPhoneAdd);

内部类代码:

 1 class OutCallReceiver extends BroadcastReceiver {
 2 
 3         @Override
 4         public void onReceive(Context context, Intent intent) {
 5             //获取去电号码
 6             String outCallNumb = getResultData();
 7             //查询数据库
 8             String outCallAdd = NumberAddQueryUtils.queryNumber(outCallNumb);
 9             Toast.makeText(context, outCallAdd, 1).show();
10         }
11     } 
View Code

  2、在广播接收者类所在的类,即“显示来电号码归属地”服务类(ShowComingPhoneAdd)中用代码注册。

    (1)定义一个BroadcastReceiver对象的成员变量(取名outCallReceiver);

    (2)在onCreate()方法中:

      ①通过new一个1中自定义的内部类对象,使(1)的成员变量实例化;

      ②通过new方式定义并实例化一个IntentFilter(意图匹配器)对象(取名intentFilter);

      ③通过IntentFilter对象的addAction(String action)方法增加需过滤的动作,参数action为来电动作(即android.intent.action.NEW_OUTGOING_CALL);

      ④通过registerReceiver(BroadcastReceiver receiver, IntentFilter filter)方法注册Receiver ,参数receiver为需要注册的receiver名称(本例为自定义内部类对象outCallReceiver),参数filter为意图过滤器(本例为intentFilter)

onCreate()方法中注册Receiver代码为:

1 //代码注册广播接收者
2         outCallReceiver = new OutCallReceiver();
3         IntentFilter intentFilter = new IntentFilter();
4         intentFilter.addAction("android.intent.action.NEW_OUTGOING_CALL");
5         registerReceiver(outCallReceiver, intentFilter);
View Code

  3、随着服务(ShowComingPhoneAdd)结束而用代码注销广播接收者

    (1)在服务的onDestroy()方法(即服务销毁时)中,通过unregisterReceiver(BroadcastReceiver receiver)方法注销Receiver,参数receiver为需要注销的Receiver名称(outCallReceiver)

    (2)将注销后的Receiver对象(outCallReceiver)设为null,以释放资源;

onDestroy()注销Receiver代码:

1 //注销广播接收者
2         unregisterReceiver(outCallReceiver);
3         outCallReceiver = null;
View Code

  4、修订。由于“显示来电号码归属地”服务类(ShowComingPhoneAdd)也可以显示去电号码的归属地信息,因此可将该服务名称改为“显示号码归属地”服务类(ShowPhoneAdd),以便于理解。

 

posted @ 2015-04-30 10:29  红烧大白鲨  阅读(295)  评论(0编辑  收藏  举报