在Android Studio中利用AIDL和反射技术拦截来电。(项目显示模式为Project)
1、项目的src文件夹下新建文件夹(src右键——new——Package),取名“aidl”;
2、在新建文件夹下新建文件(右键——new——FIle),取名“ITelephony.aidl”;
3、在ITelephony.aidl文件中输入如下内容:
package com.android.internal.telephony; interface ITelephony{ boolean endCall(); void answerRingingCall(); }4、然后选中菜单栏的Build——Clean Project,再Build——Make Project,此时会在项目的build文件夹下形成如下目录:
5、此时在需要拦截来电的逻辑中加入如下代码:
try {//利用aidl和反射挂断电话 Class clazz = getClassLoader().loadClass("android.os.ServiceManager"); Method method = clazz.getDeclaredMethod("getService", String.class); IBinder iBinder = (IBinder) method.invoke(null, TELEPHONY_SERVICE); ITelephony iTelephony = ITelephony.Stub.asInterface(iBinder); iTelephony.endCall(); } catch (Exception e) { e.printStackTrace(); }