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),以便于理解。

 

转载于:https://www.cnblogs.com/Red-Shark/p/4468221.html

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值