橘子皮

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

一、电话拦截器应用说明

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

1342878160_6969

由于此应用应该比较隐蔽,因此需要开机自启动,当开机自启动时,系统会发出一个广播,激活满足条件的组件(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,则清空,不让他拨打
    }
}

 

来源:http://blog.csdn.net/xiazdong/article/details/7771315

posted on 2014-04-25 16:25  橘子皮  阅读(786)  评论(0编辑  收藏  举报