/**
* 挂断电话
*/
private void endCall() {
try {
//这种写法一定要记住,很重要 TODO
// IBinder b = ServiceManager.getService(TELEPHONY_SERVICE);
Class clazz = CallSmsSafeService.class.getClassLoader().loadClass("android.os.ServiceManager");
Method method = clazz.getMethod("getService", String.class);
IBinder iBinder = (IBinder) method.invoke(null, TELEPHONY_SERVICE);//调用的是static静态方法的时候,第一个参数为null
ITelephony.Stub.asInterface(iBinder).endCall();
} catch (Exception e) {
e.printStackTrace();
}
}
需要引入的aidl文件有NeighboringCellInfo和ITelephony,目录需要与android中方的木兰路保持一致,如下图:
<img src="https://img-blog.csdn.net/20150414214047183?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcXEyNzU5NDkwMzRxcQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="" />
注意:1、adidl文件和java文件同级,都处于src/main目录下
2、在android studio中引入aidl文件之后,项目要重新build一下(执行命令gradle build)