拦截来电(来电挂断)
通过监听系统通话状态的改变,来实现拦截来电,但这种拦截方式存在缺陷,会有来电界面显示(包括来电声音和来电界面),原因是时机过晚;并且只有系统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>
拦截来电(来电挂断)相关推荐
- android 挂断 电话 反射,Android实现来电自动挂断实现机制
通过aidl及反射实现挂断电话 具体分三步: (1)ITelephony.aidl ,必须新建com.Android.internal.telephony包并放入ITelephony.aidl文件(构 ...
- android 监听电话状态 来电 接听 挂断
如果想要监听手机的来电状态 需要接收手机的电话广播 首先是静态注册 <receiver android:name=".PhoneReceiver"android:expor ...
- Service-黑名单来电自动挂断
这只是一个学习例程,很多功能有待完善 允许用户动态加载手机通讯录中的电话号码,勾选某些号码作为黑名单,一旦将某些号码设为黑名单,当该号码自动挂断该号码 Android没有对外公开挂断电话的API,如果 ...
- andrid之来电自动挂断电话
先去官网下载ITelephony.aidl文件 然后在新建一个AIDL文件名字就叫ITelephony 在把下载的ITelephony.aidl替换你新建的ITelephony 重新编译 然后新建一个 ...
- android自动接听和挂断电话
实现android自动接听和挂断电话功能.代码如下: 添加权限 <uses-permission android:name="android.permission.CALL_PHONE ...
- 苹果x怎么关机_苹果手机关机键怎么挂断电话
非锁32313133353236313431303231363533e4b893e5b19e31333433653866屏状态下的操作 所谓"非锁屏"状态,也就是说手机处于操作状态 ...
- 自动挂断黑名单来电和黑名单短信的拦截
一.自动挂断黑名单来电 监听开机广播,开机的时候就启动拦截黑名单来电的服务,之后由此服务来拦截黑名单 二.黑名单短信拦截 1.注册广播接收,接收短信广播 2.实现
- 来电拦截、来电挂断,通过反射实现一键挂断
最近在做这个功能,经过各位资料查询,得出结论: 系统并没有提供我们开发者去挂断电话的接口 于是软的不行硬的来,通过反射实现功能. 1.首先,在项目src\main文件夹下创建一个aidl文件夹: 2. ...
- android 自动挂断,android 来电自动接听和自动挂断(2.3以上)
转自http://stephen830.iteye.com/blog/1181786java android 来电自动接听和自动挂断android 注意:android2.3版本不支持下面的自动接听方 ...
最新文章
- 你这代码写得真丑,满屏的try-catch,全局异常处理不会吗?
- windows10远程桌面连接及问题解决
- Android TabLayout(选项卡布局)简单用法实例分析
- C++class默认生成4个函数
- 梯度下降(Gradient Descent),一句代码,一个式子
- 定时采用ajax方式获得数据库,《基于Ajax的在线客服系统的设计与实现》-毕业设计论文(学术).doc...
- 安装ie9提示未能完成安装_IE9浏览器无法安装怎么办?如何解决?
- 上传jar包到Apache Archiva本地仓库
- JSON之三:获取JSON文本并解释(以google的天气API为例)
- 程序员偷偷深爱的 9 个不良编程习惯
- openshift_Openshift源中的高可用性Drools无状态服务
- Java LinkedHashMap getOrDefault()方法与示例
- 苹果隐私追踪新规发布后 Android广告支出涨10%
- n个物品,Vi的价值,Ti有n个,求所有的可能的价值:
- 学计算机干眼,电脑族预防干眼的7个小妙招_39健康网
- python在文本添加超链接_python做超链接
- Python自动化开发学习14-html和css
- 全球及中国面膜行业消费格局与十四五趋势分析报告2022年
- Android wifi探究一:初步认识wpa_supplicant与wifi框架梳理
- 单点登录-基于JWT机制的单点登录