Android入门:广播接收者应用(电话拦截器)


一、电话拦截器应用说明


在我们输入完电话号码并拨打电话时,系统会发出一个有序广播(action="android.intent.action.NEW_OUTGOING_CALL"),并且预计会发送给电话拨号器应用的广播接收者,但是我们可以设置一个优先级更高的拦截器广播接收者(android:priority="1000"),使得在拨号器的广播接收者收到电话之前将电话清空,如图所示:


由于此应用应该比较隐蔽,因此需要开机自启动,当开机自启动时,系统会发出一个广播,激活满足条件的组件(action="android.intent.action.BOOT_COMPLETED");



二、代码实现


AndroidManifest.xml

<uses-permission android:name="android.permission.PROCESS_OUTGOING_CALLS"/>	<!-- 外界拨打权限 -->
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED"/>	<!-- 接收开机广播 -->
<application
     android:icon="@drawable/ic_launcher"
     android:label="@string/app_name" >
     <receiver android:name=".PhoneBroadcastReceiver">
         <intent-filter android:priority="1000">
             <action android:name="android.intent.action.NEW_OUTGOING_CALL"/>
             <action android:name="android.intent.action.BOOT_COMPLETED"/>
         </intent-filter>
     </receiver>
</application>


PhoneBroadcastReceiver.java


package com.xiazdong.phonelistener;

import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;

public class PhoneBroadcastReceiver extends BroadcastReceiver {
	@Override
	public void onReceive(Context context, Intent intent) {
		if("5556".equals(this.getResultData())) this.setResultData(null);	//如果电话是5556,则清空,不让他拨打
	}
}



  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android 中,广播接收者是一种组件,用于接收系统或其他应用程序发送的广播消息。通过注册广播接收者应用程序可以接收与特定类别(category)相关的广播消息。 广播接收者能够接收到的广播消息是通过 intent 进行传递的。在 intent 中,可以指定广播action、data 和 category。如果广播接收者注册时指定了与广播消息中 category 相匹配的 category,则该广播接收者就可以接收到该广播消息。 例如,如果一个应用程序需要接收与网络相关的广播消息,可以在广播接收者的 IntentFilter 中添加如下代码: ```xml <receiver android:name=".NetworkReceiver"> <intent-filter> <action android:name="android.net.conn.CONNECTIVITY_CHANGE" /> <category android:name="android.intent.category.DEFAULT" /> <category android:name="android.intent.category.NETWORK" /> </intent-filter> </receiver> ``` 在上述代码中,`android.intent.category.DEFAULT` 是任何 intent 的默认 category,而 `android.intent.category.NETWORK` 是一个自定义的 category,用于标识与网络相关的广播消息。因此,当系统或其他应用程序发送了一个带有 `android.intent.category.NETWORK` category 的广播消息时,`NetworkReceiver` 就会接收到该广播消息。 需要注意的是,广播接收者可以注册多个 IntentFilter,但每个 IntentFilter 只能包含一个 action 和多个 category。在广播接收者的 `onReceive()` 方法中,可以根据接收到的广播消息的 action 和 category 进行相应的处理。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值