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

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

1、注册broadcast receiver,监视手机状态:

Java代码

< receiver android:name=".PhoneBroadcastReceiver">

< intent-filter>

< action android:name="android.intent.action.PHONE_STATE" />

< /intent-filter>

< /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:

Java代码

import com.android.internal.telephony.ITelephony;

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的存在先后顺序。这篇文章中分析了部分源码,也算是提个醒。

android 来电拒接_Android 实现直接拒接来电 | 学步园相关推荐

  1. android odex版本调试_Android编译odex版本的控制开关 | 学步园

    build\core\package.mk 中156行改为 LOCAL_DEX_PREOPT := false. true为odex版本,false为非odex版本 默认编译odex版本,如果需要非o ...

  2. android 模糊读取文件名_Android 从路径中获取文件名 | 学步园

    转载:http://androidstudy.iteye.com/blog/787560 方法一:利用String类 public String getFileName(String pathandn ...

  3. java adt 布局_android布局——AbsoluteLayout(布局)详解 | 学步园

    AbsoluteLayout(绝对布局) 前言: 该布局是不会写代码的人专用的,直接在ADT下拉组件到合适位置即可;很坑爹的说! 绝对布局是直接通过X,Y坐标来控制组件在Activity中的位置的 说 ...

  4. android:layout_marginbottom=,[Android]RelativeLayout中最底的View其layout_marginBottom无效 | 学步园...

    处理一个Dialog,发现RelativeLayout布局下最后一个View的layout_marginBottom会失效. 效果图见: 解决方法为: 在最底的组件后面再加个View吧... 这个现象 ...

  5. android 来电没有拒接短信功能

    具体修改文件位置如下: Telecomm\Service\src\com\android\server\telecom\ParcelableCallUtils.java 单卡情况下,来电界面都是有短信 ...

  6. Android L无法接听/拒接来电现象的分析与解决(文末对比Android M)

    这是一篇补档博客,整理记录的时候发现这篇没有发上来. 首次编辑完成时间是2016.05.02.过时了过时了. Android L无法接听/拒接来电现象分析与解决(文末对比Android M) 问题描述 ...

  7. android 来电过滤,Call Screening(来电过滤) on Android N

    之前在看Android官方文档系统的时候看到Android N 一系列新增和改变的特性,因为工作中负责的部分和通话有关,就尤其注意到了这个Call Screening. 下面来简单介绍一下Call S ...

  8. Android来电铃声默认设置的实现方法与如何设置语音来电的默认铃声

    Android来电铃声默认设置的实现方法与如何设置语音来电的默认铃声 一.Android来电铃声默认设置的实现方法 Andoird默认来电铃声的设置方法为修改build/target/product/ ...

  9. android来电电话获取,Android获取来电号码代码

    对于Android平台的整个来电软件制作十分简单,Android平台在各方面都比较智能,加上一个BOOT_COMPLETED获取,保证开机自动运行,一个来电通就很容易的制作完成了. Android来电 ...

最新文章

  1. XCode真机测试发布时产生The executable was signed with invalid entitlements.解决办法
  2. 2018年11月12日
  3. r2dbc_使用Spring Data R2DBC进行异步RDBMS访问
  4. php判断桌面宽度,js获取页面宽度高度及屏幕分辨率
  5. 重置mysql+密码_MySQL重置root密码的几种方法(windows+Linux)
  6. linux常用命令(16)locate命令
  7. 500位全球算法开发者零奖金参加阿里云天池大赛 AI预测台风助力防灾减灾
  8. 错误400-The request sent by the client was syntactically incorrect
  9. 语言中能产生汉明窗吗_0—6岁幼儿的语言、秩序、情感、数学敏感期,有这些特点和表现...
  10. 小林求职记(六)踩过Dubbo坑,回答印象深,干货整理
  11. 当前最快的实例分割模型:YOLACT 和 YOLACT++
  12. tensorflow之预测手写字的概率
  13. vector和list的排序
  14. C# 客服端上传文件与服务器器端接收 (简单代码)
  15. 强化学习推荐系统_推荐人系统:价值调整,强化学习和道德规范
  16. matlab时频分析
  17. 常用信号去噪与信号回归方法的原理及MATLAB实现
  18. 详细描述Tomcat体系结构(图文并茂)
  19. aid learning安装应用_极致安卓—Termux/Aid Learning安装宇宙最强VS Code
  20. 打游戏买什么手机好?rog3性能强 网速稳!

热门文章

  1. 天津室内设计培训班:成为一名合格的室内设计师需要掌握哪些知识
  2. 树莓派利用python控制57步进电机
  3. Linux驱动|rtc-hym8563移植笔记
  4. pktgen自动化测试网卡速率和包率
  5. 用U盘在虚拟机中装Linux系统
  6. JavaScript pink老师学习内容详解
  7. 域名转让代码_域名转让怎么做?
  8. 谷歌Project Glass:最新情报盘点
  9. python判断火车票座位代码_12306 火车票监控Python代码
  10. CEF与Off-Screen Rendering与Transparent Background