我正在面对一个问题,当我使用proguard应用程序使用telephonyservice apis在
Android中使用反射.
我已经定义了一个软件包com.android.internal.telephony,我已经复制了ITelephony.aidl文件.
Class<?> c = Class.forName(tm.getClass().getName()); Method m = c.getDeclaredMethod("getITelephony"); m.setAccessible(true); com.android.internal.telephony.ITelephony telephonyService = (com.android.internal.telephony.ITelephony) m.invoke(tm); if(buttonInAction == acceptButton){ Log.v(TAG,"Answering the call"); telephonyService.answerRingingCall(); finish(); } else{ Log.v(TAG,"Rejecting the call"); telephonyService.endCall(); finish(); }
现在没有proguard我可以使用这个apis,但是当我使用proguard进行编译时,它会给classcastexception.我知道我需要在proguard.cfg文件中添加一些东西,我也尝试过几个东西,如-dontshrink -dontoptimize,但仍然没有起作用.
解决方法
这解决了问题:
-keep class com.android.internal.telephony.ITelephony { *; }