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

来源:互联网 发布:淘宝开店及投资 编辑:程序博客网 时间:2024/05/01 02:00


一、电话拦截器应用说明


在我们输入完电话号码并拨打电话时,系统会发出一个有序广播(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 {@Overridepublic void onReceive(Context context, Intent intent) {if("5556".equals(this.getResultData())) this.setResultData(null);//如果电话是5556,则清空,不让他拨打}}



原创粉丝点击