这篇文章给大家介绍Android开发四大组件之实现电话拦截和电话录音,涉及到android四大基本组件在程序中的应用,对android四大基本组件感兴趣的朋友可以参考下本篇文章
一、问题描述
使用BordercastReceiver和Service组件实现下述功能:
1.当手机处于来电状态,启动监听服务,对来电进行监听录音。
2.设置电话黑名单,当来电是黑名单电话,则直接挂断。
当拨打电话或电话状态发生改变时,系统就会发出有序广播,因此我们可以使用BordercastReceiver接受广播,因BordercastReceiver执行时间短不能执行耗时任务也不能使用子线程,因此我们应启动一个Service来监听电话并进行处理
二、加入AIDL文件
Android没有对外公开结束通话的API,要结束通话就必须使用AIDL与电话管理服务进行通信,并调用服务中的API实现结束通话,这样需要android 源码文件NeighboringCellInfo.aidl和ITelephony.aidl添加到项目中,如图所示:

Android Studio 会自动编译产生对应的类文件
三、编写TelReceiver组件
- public class TelReceiver extends BroadcastReceiver { public TelReceiver() {
- }
- @Override public void onReceive(Context context, Intent intent) {
- Intent i=new Intent(context,ListenPhoneService.class); i.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
- i.setAction(intent.getAction()); i.putExtra(TelephonyManager.EXTRA_INCOMING_NUMBER,
- intent.getStringExtra(TelephonyManager.EXTRA_INCOMING_NUMBER));//电话号码 i.putExtra(TelephonyManager.EXTRA_STATE,
- intent.getStringExtra(TelephonyManager.EXTRA_STATE));//电话状态 context.startService(i);//启动服务
- } }










