android 挂断 电话 反射,Android实现来电自动挂断实现机制
通过aidl及反射实现挂断电话
具体分三步:
(1)ITelephony.aidl ,必须新建com.Android.internal.telephony包并放入ITelephony.aidl文件(构建后在gen下有ITelephony.java文件,这是aidl生成的接口),文件内容如下:
package com.android.internal.telephony;
interface ITelephony{
boolean endCall();
void answerRingingCall();
}
(2)在需要的类中添加如下方法,代码如下(通过反射获取电话接口的实例)
/**
* @param context
* @return
*/
private static ITelephony getITelephony(Context context) {
TelephonyManager mTelephonyManager = (TelephonyManager) context
.getSystemService(TELEPHONY_SERVICE);
Class c = TelephonyManager.class;
Method getITelephonyMethod = null;
try {
getITelephonyMethod = c.getDeclaredMethod("getITelephony",
(Class[]) null); // 获取声明的方法
getITelephonyMethod.setAccessible(true);
} catch (SecurityException e) {
e.printStackTrace();
} catch (NoSuchMethodException e) {
e.printStackTrace();
}
try {
ITelephony iTelephony = (ITelephony) getITelephonyMethod.invoke(
mTelephonyManager, (Object[]) null); // 获取实例
return iTelephony;
} catch (Exception e) {
e.printStackTrace();
}
return iTelephony;
}
(3)在来电时调用此实例,然后调用此endCall()方法。
mTelephonyManager = (TelephonyManager) this
.getSystemService(TELEPHONY_SERVICE);
mTelephonyManager.listen(phoneStateListener,
PhoneStateListener.LISTEN_CALL_STATE);
//电话实例
PhoneStateListener phoneStateListener = new PhoneStateListener() {
@Override
public void onCallStateChanged(int state, String incomingNumber) {
switch (state) {
case TelephonyManager.CALL_STATE_RINGING :
iTelephony = getITelephony(getApplicationContext()); //获取电话接口
if (iTelephony != null) {
try {
iTelephony.endCall(); // 挂断电话
Toast.makeText(getApplicationContext(),
"endCall "+ incomingNumber +" successful!", 3000).show();
} catch (RemoteException e) {
e.printStackTrace();
}
}
break;
default :
break;
}
}
};
//注意:在功能清单文件中添加电话的权限:
android 挂断 电话 反射,Android实现来电自动挂断实现机制相关推荐
- android 挂断 电话 反射,android 接听和挂断实现方式
注意:android2.3版本及以上不支持下面的自动接听方法. (会抛异常:java.lang.SecurityException: Neither user xxxxx nor current pr ...
- Service-黑名单来电自动挂断
这只是一个学习例程,很多功能有待完善 允许用户动态加载手机通讯录中的电话号码,勾选某些号码作为黑名单,一旦将某些号码设为黑名单,当该号码自动挂断该号码 Android没有对外公开挂断电话的API,如果 ...
- andrid之来电自动挂断电话
先去官网下载ITelephony.aidl文件 然后在新建一个AIDL文件名字就叫ITelephony 在把下载的ITelephony.aidl替换你新建的ITelephony 重新编译 然后新建一个 ...
- android 4.0 电话录音,ANDROID音频系统散记之四:4.0音频系统HAL初探
昨天(2011-11-15)发布了Android4.0的源码,今天download下来,开始挺进4.0时代.简单看了一下,发现音频系统方面与2.3的有较多地方不同,下面逐一描述. 一.代码模块位置 1 ...
- android自动接听和挂断电话
实现android自动接听和挂断电话功能.代码如下: 添加权限 <uses-permission android:name="android.permission.CALL_PHONE ...
- android 电话漏洞,Android平台电话权限漏洞公开 手机竟能自己打电话
闽南网7月22日讯 近日,360手机安全团队发布技术研究报告称,最新发现了一种可以让手机偷偷拨打或挂断电话的Android手机漏洞.分析报告指出,虽然目前Android4.4.3版本已修复了这一漏洞, ...
- Android面试:整理了Android面试官最常问的174道面试题,让你秒变offer收割机
本文是专为 Android 开发工程师准备的高薪面试真题汇总题库,涵盖历年大厂高频面试题总结+核心考点深度解析,可以帮助大家全面梳理知识点,并针对面试中可能遇到的问题进行深入分析,在众多面试者中脱颖而 ...
- Autofs自动挂在实现
Autofs介绍: 1 2 3 4 5 6 mount是用来挂载文件系统的,可以在系统启动的时候挂载也可以在系统启动后挂载.对于本地固定设 备,如硬盘可以使用mount挂载:而光盘.软盘.NFS.SM ...
- android 监听电话状态 来电 接听 挂断
如果想要监听手机的来电状态 需要接收手机的电话广播 首先是静态注册 <receiver android:name=".PhoneReceiver"android:expor ...
最新文章
- asp.net 2.0中设定默认焦点按钮
- Android测试之Monkey初体验
- ES6第一节:开发环境的搭建
- 时任上海来伊份互联网事业群总裁王戈钧 :传统企业(线上+线下)移动互联网改造...
- axure html 360安装扩展,小编搞定win7系统360浏览器添加Axure扩展的设置方案
- 纯手工打造简单分布式爬虫(Python)
- CVSNT Manual
- MyCat分片规则之固定hash分片
- 求一亿以内的回文质数(素数)
- 商场云WiFi靠谱吗
- [源码和文档分享]基于JAVA实现的图形化页面置换算法
- BUPT Summer Journey #test11 A
- 对C++和Go语言中接口的理解
- 【JavaScript算法】---希尔排序(转载自我的老师 Alley-巷子)
- 不允许对不可访问的基类 类型强制转换 c++
- 趣图 | 小哥哥你怎么那么高冷呀?
- 【整理】EFI/UEFI BIOS 入门 : All For Beginners
- 存储圈装逼必上TOP 10网站
- java输出abba_面试-字符串abba匹配问题-java8解决方案
- java page 分页_java Page分页显示