通过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<TelephonyManager> 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;
}
}
};
//注意:在功能清单文件中添加电话的权限:
<uses-permission android:name="android.permission.CALL_PHONE"/>
<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
分享到:
相关推荐
自己在练习电话接口反射机制的时候,写的一个小应用。对了解电话反射机制大有帮助.
Android实现来电自动挂断并回复短信.zip,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
实现自动接听和挂断电话功能
安卓开发-Android 实现自动接听和挂断电话功能.zip.zip
Android 实现自动接听和挂断电话功能,用的不多,交流共享 小技巧,供参考
安卓Android源码——实现自动接听和挂断电话功能.zip
自己做的Android来电接听界面,可以左右滑动接听或者挂断源码 自己做的Android来电接听界面,可以左右滑动接听或者挂断源码
这是一个通过反射自动拨打电话和挂断电话的demo,如果不知道原理的,可去http://blog.csdn.net/u013895206 博客了解下原理。
Android来去电监听,电话挂断
android 自动接听电话和挂断(支持所有版本)
如果来电号码没在联系人中,则进行挂断,并在首页显示
Android应用源码之 实现自动接听和挂断电话功能).zip
实现打电话并且,即使挂断电话
主要为大家详细介绍了android实现接通和挂断电话功能,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
Android应用源码之 实现自动接听和挂断电话功能).zip项目安卓应用源码下载Android应用源码之 实现自动接听和挂断电话功能).zip项目安卓应用源码下载 1.适合学生毕业设计研究参考 2.适合个人学习研究参考 3.适合公司...
CallSlideView滑动实现接听和挂断电话的View效果图1、向左滑动接听,向右滑动挂断2、向两边滑动时,颜色渐变3、颜色和字体可以在xml中完全自定义实现方法监听onTouhc,在运动的过程中不停的出发onDraw,画图同时颜色...