我正面临一个问题,当我使用proguard的应用程序已经使用telephonyservice api在android中使用反射。
我已经定义了一个包com.android.internal.telephony并在那里复制了ITelephony。aidl文件。
下面是我使用telephony使用反射方法的代码片段。
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我可以使用这个api,但是当我使用proguard进行编译时,它会给出classcastexception。我知道我需要在proguard.cfg文件中添加一些东西,我也尝试了一些东西,如- donshrink - dontopoptimize,但仍然不起作用。
请让我知道,如果我错过了需要在该文件中添加的东西或任何其他解决这个问题的方法。谢谢英国人
这解决了问题:
-keep class com.android.internal.telephony.ITelephony { *; }