`
kevinlynx
  • 浏览: 82253 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

实现直接拒接来电

阅读更多
经过简单的google/baidu后,发现android没有现成的API去拒接电话。android可以通过注册BroadcastReceiver截取短信,因为这个broadcast是一个ordered broadcast,所以只要优先级比短信接收程序高,就可以提前终止掉这个broadcast receiver。

但是,电话呼入则没有类似的机制。不过,综合网上的一些资料,通过以下大体的步骤,则可以实现拒接电话:

1、注册broadcast receiver,监视手机状态:
        <receiver android:name=".PhoneBroadcastReceiver">
            <intent-filter>
                <action android:name="android.intent.action.PHONE_STATE" /> 
            </intent-filter>
        </receiver>

当手机接收到电话时,则会触发该broadcast receiver。

2、最重要的,就是取得可以控制电话的API。这些API貌似是android内部的接口,并未暴露。具体方式参见该帖子:http://topic.csdn.net/u/20091226/00/09e2979b-7c8c-4991-856d-586a278875c0.html

使用时需要手动添加import:
import com.android.internal.telephony.ITelephony;


同样的方式,在stackoverflow上也有人大致地提了下:http://stackoverflow.com/questions/1083527/how-to-block-calls-in-android

值得注意的是,使用这种方式拒接来电,broadcast receiver会被触发两次。第一次是收到来电,第二次则是由于调用endCall拒接了后触发。我们在处理自己的程序逻辑时,可以通过ITelephony.getCallState来区分。该函数返回1表示来电,0表示拒接来电。

最后,这个方法有时候依然会出现系统接听电话的界面,并且,通话记录里也会有拒接电话的记录。这个原因大概也是系统底层在处理这块逻辑时,系统逻辑和通知broadcast receiver的存在先后顺序。这篇文章中分析了部分源码,也算是提个醒:
http://blog.wangling.me/2009/08/why-it-is-impossible-to-intercept-incoming-calls-on-android/





0
0
分享到:
评论

相关推荐

    短信拒接,来电转接

    自己写的一个android项目,实现了短信拒接、来电转接、设置转接号码等功能,上传上去希望对初学android的朋友有一定的帮助,解压后,可直接运行在手机上,即可使用,强力推荐。

    go语言AI反电销骚扰系统源码解决电话骚扰问题的AI解决方案.zip

    实现功能:智能接听: 识别对方的语音,配合您的话术设置判断是否骚扰行为(比如设置拒接"贷款、中介、炒股等"骚扰来电)多种挂断策略: 发现骚扰行为并挂断后,自动发送短信通知到您的主号。短信代收代发: 不仅...

    Android无需申请权限拨打电话的两种方式

    android 打电话有两种实现方式,第一种方法拨打电话跳转到拨号界面,第二种方法,拨打电话直接进行拨打,下面逐一给大家介绍这两种方式,需要的朋友参考下吧

    语音360 V1.2.90

    语音360(正式新版)—智能...4.电话留言:智能处理漏接电话、防止陌生来电干扰、拒接快速回复短信,一切为实际场景考虑! 5.语音备忘:可以自由切换两种模式,语音模式和识别模式,快速备忘重要内容,快速设置提醒时间

    这是一个软硬件结合的开源项目,如果是普通使用者,需要有初级的硬件动手能力(比如接电源网线,插个板子总得会

    已实现功能:智能接听: 识别对方的语音,配合您的话术设置判断是否骚扰行为(比如设置拒接"贷款、中介、炒股等"骚扰来电);多种挂断策略: 发现骚扰行为并挂断后,自动发送短信通知到您的主号。短信代收代发: ...

    SC6600L手机使用手册

    3.2 接听或拒绝来电 15 3.2.1 接听来电 15 3.2.2 接听第二个来电 16 3.2.3 拒接来电 16 3.3 通话中的菜单 16 3.4调整音量 17 3.5 结束通话 17 4. 通话记录 18 4.1 已拨电话 18 4.2 已接来电 19 4.3 未接来电 19 4.4 ...

    来电拦截及拦截后的提示音

    其实大家可以下载 xxx卫士看下,它设置来电拒接模式后,都是会启动设置MMI指令的界面。然后再去“设置》通话设置》来电转接”,看看 “占线时转接” 设置好的电话号码,就可以知道空号/已关机/已停机对应的电话号码...

    400电话办理选号系统

    此功能根据大多数客户选号心理,实现可根据地区电话区号检索400电话号码的功能,比如:上海的客户大多会选择:400 021 ABCD,客户只需要点击“地区名称”为“上海”的链接,就可以查询出所有包含“021”的号码。...

    java开源包3

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    GPRS模块使用注意事项以及编程方法

    该文档是本人使用GPRS以及通过串口对GPRS编程的总结与体会,里面包含了通过串口直接和GPRS模块进行通信以及怎样通过程序来控制GPRS模块实现收发短信,接听电话拒绝电话,拨打电话等功能

    AutoPilotv1.0简体中文汉化版

    昨天自己大半夜的吼了一晚上录音,拿表不停的测时间,浪费了N分钟的电话费~~终于把这个软件给搞明白了~~很好用的,适合经常出入吵杂公共场所听不到手机响,或者干脆不想接电话的情况~~呵呵~~ 实现电话自动答录功能...

    java开源包4

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    JAVA上百实例源码以及开源项目源代码

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    JAVA上百实例源码以及开源项目

     Java数据压缩与传输实例,可以学习一下实例化套按字、得到文件输入流、压缩输入流、文件输出流、实例化缓冲区、写入数据到文件、关闭输入流、关闭套接字关闭输出流、输出错误信息等Java编程小技巧。 Java数组倒置...

    java开源包1

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包11

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包2

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包6

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

    java开源包5

    LemonSMS 这个Java库可以让开发者在应用程序中集成使用GSM调制解调器或兼容电话来发送SMS消息。 远程桌面 Java Remote Desktop.tar Java Remote Desktop 是一个Java 的远程桌面软件,支持很多特性例如文件传输、...

Global site tag (gtag.js) - Google Analytics