Android开发之通过反射获取到挂断电话的API

Android开发黑名单工具类,需要用到挂断电话的API,但是该API处于隐藏状态,需要通过反射得到该方法。、

步骤:

1.通过当前类获取到ServiceManager的字节码

Class< ? > clazz = CallSafeService.class.getClassLoader().loadClass("android.os.ServiceManager");

2.使用getDeclaredMethod()方法得到该方法

Method method = clazz.getDeclaredMethod("getService", String.class);

3.通过invoke()方法执行该方法,获取到IBinder对象

IBinder ibinder = (IBinder) method.invoke(null, TELEPHONY_SERVICE);

4.获取到了IBinder对象了,就可以得到ITelephony方法

ITelephony iTelephony = ITelephony.Stub.asInterface(ibinder);

5.使用ITelephony中的endCall()方法,实现挂断电话的功能。

iTelephony.endCall();

 

其中需要把android的AIDL拷贝到当前工程下,且ITelephony.aidl的包名必须保持一致

ITelephony.aidl包名:com.android.internal.telephony

ITelephony.aidl还需要用到NeighboringCellInfo.aidl文件,把这个文件也拷贝到当前工程下

NeighboringCellInfo.aidl包名:android.telephony

 

然后就可以使用了挂断电话功能了。

你可能感兴趣的:(Android开发之通过反射获取到挂断电话的API)