通过监听系统通话状态的改变,来实现拦截来电,但这种拦截方式存在缺陷,会有来电界面显示(包括来电声音和来电界面),原因是时机过晚;并且只有系统apk才能挂断电话。

1.MainActivity.java

package com.tdc.endphone;import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;public class MainActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}}

2.PhoneStatReceiver.java

package com.tdc.endphone;import java.lang.reflect.Method;import android.app.Service;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.telephony.TelephonyManager;
import com.android.internal.telephony.ITelephony;  public class PhoneStatReceiver extends BroadcastReceiver {TelephonyManager telMgr;  @Overridepublic void onReceive(Context context, Intent intent) {// TODO Auto-generated method stubtelMgr = (TelephonyManager) context.getSystemService(Service.TELEPHONY_SERVICE);  switch (telMgr.getCallState()) {  case TelephonyManager.CALL_STATE_RINGING:  endCall();  break;  case TelephonyManager.CALL_STATE_OFFHOOK:                                 break;  case TelephonyManager.CALL_STATE_IDLE:                                 break;  }  }private void endCall()  {  Class<TelephonyManager> c = TelephonyManager.class;           try  {  Method getITelephonyMethod = c.getDeclaredMethod("getITelephony", (Class[]) null);  getITelephonyMethod.setAccessible(true);  ITelephony iTelephony = null;  iTelephony = (ITelephony) getITelephonyMethod.invoke(telMgr, (Object[]) null);  iTelephony.endCall();  }  catch (Exception e)  {  }          }
}

3.AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.tdc.endphone"android:versionCode="1"android:versionName="1.0" ><uses-sdkandroid:minSdkVersion="8"android:targetSdkVersion="17" /><uses-permission android:name="android.permission.CALL_PHONE"/>  <!-- 读取手机状态的权限 -->  <uses-permission android:name="android.permission.READ_PHONE_STATE" />  <!-- 读contact的权限 -->  <uses-permission android:name="android.permission.READ_CONTACTS" />  <applicationandroid:allowBackup="true"android:icon="@drawable/ic_launcher"android:label="@string/app_name"android:theme="@style/AppTheme" ><activityandroid:name="com.tdc.endphone.MainActivity"android:label="@string/app_name" ><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><!-- 注册监听手机状态 -->  <receiver android:name=".PhoneStatReceiver">  <intent-filter android:priority="1000" >  <action android:name="android.intent.action.PHONE_STATE" />  </intent-filter>  </receiver></application></manifest>

拦截来电(来电挂断)相关推荐

  1. android 挂断 电话 反射,Android实现来电自动挂断实现机制

    通过aidl及反射实现挂断电话 具体分三步: (1)ITelephony.aidl ,必须新建com.Android.internal.telephony包并放入ITelephony.aidl文件(构 ...

  2. android 监听电话状态 来电 接听 挂断

    如果想要监听手机的来电状态  需要接收手机的电话广播 首先是静态注册 <receiver android:name=".PhoneReceiver"android:expor ...

  3. Service-黑名单来电自动挂断

    这只是一个学习例程,很多功能有待完善 允许用户动态加载手机通讯录中的电话号码,勾选某些号码作为黑名单,一旦将某些号码设为黑名单,当该号码自动挂断该号码 Android没有对外公开挂断电话的API,如果 ...

  4. andrid之来电自动挂断电话

    先去官网下载ITelephony.aidl文件 然后在新建一个AIDL文件名字就叫ITelephony 在把下载的ITelephony.aidl替换你新建的ITelephony 重新编译 然后新建一个 ...

  5. android自动接听和挂断电话

    实现android自动接听和挂断电话功能.代码如下: 添加权限 <uses-permission android:name="android.permission.CALL_PHONE ...

  6. 苹果x怎么关机_苹果手机关机键怎么挂断电话

    非锁32313133353236313431303231363533e4b893e5b19e31333433653866屏状态下的操作 所谓"非锁屏"状态,也就是说手机处于操作状态 ...

  7. 自动挂断黑名单来电和黑名单短信的拦截

    一.自动挂断黑名单来电 监听开机广播,开机的时候就启动拦截黑名单来电的服务,之后由此服务来拦截黑名单 二.黑名单短信拦截 1.注册广播接收,接收短信广播 2.实现

  8. 来电拦截、来电挂断,通过反射实现一键挂断

    最近在做这个功能,经过各位资料查询,得出结论: 系统并没有提供我们开发者去挂断电话的接口 于是软的不行硬的来,通过反射实现功能. 1.首先,在项目src\main文件夹下创建一个aidl文件夹: 2. ...

  9. android 自动挂断,android 来电自动接听和自动挂断(2.3以上)

    转自http://stephen830.iteye.com/blog/1181786java android 来电自动接听和自动挂断android 注意:android2.3版本不支持下面的自动接听方 ...

最新文章

  1. 你这代码写得真丑,满屏的try-catch,全局异常处理不会吗?
  2. windows10远程桌面连接及问题解决
  3. Android TabLayout(选项卡布局)简单用法实例分析
  4. C++class默认生成4个函数
  5. 梯度下降(Gradient Descent),一句代码,一个式子
  6. 定时采用ajax方式获得数据库,《基于Ajax的在线客服系统的设计与实现》-毕业设计论文(学术).doc...
  7. 安装ie9提示未能完成安装_IE9浏览器无法安装怎么办?如何解决?
  8. 上传jar包到Apache Archiva本地仓库
  9. JSON之三:获取JSON文本并解释(以google的天气API为例)
  10. 程序员偷偷深爱的 9 个不良编程习惯
  11. openshift_Openshift源中的高可用性Drools无状态服务
  12. Java LinkedHashMap getOrDefault()方法与示例
  13. 苹果隐私追踪新规发布后 Android广告支出涨10%
  14. n个物品,Vi的价值,Ti有n个,求所有的可能的价值:
  15. 学计算机干眼,电脑族预防干眼的7个小妙招_39健康网
  16. python在文本添加超链接_python做超链接
  17. Python自动化开发学习14-html和css
  18. 全球及中国面膜行业消费格局与十四五趋势分析报告2022年
  19. Android wifi探究一:初步认识wpa_supplicant与wifi框架梳理
  20. 单点登录-基于JWT机制的单点登录

热门文章

  1. 内存分析工具MAT分析内存溢出问题
  2. 索尼的hlg是什么_索尼的HLG使用方法
  3. 马化腾演讲、张勇内部讲话暴露两大巨头云上端倪
  4. Coherence-Enhancing Shock Filters 代码及详细注释【OpenCV】
  5. vue移动端表格吸顶、行自适应高度、列左侧固定悬浮
  6. leetcode之美团公司算法
  7. 中文网页设计分享之《banner设计篇》
  8. 远程桌面提示CredSSP加密数据库修正
  9. Kubernetes Ingress and Services 故障排查
  10. 网络变压器的工作原理:网络变压器中的直流电阻对POE供电有怎样的影响呢?