在使用proguard进行Android应用程序时,反射方法不起作用

前端之家收集整理的这篇文章主要介绍了在使用proguard进行Android应用程序时,反射方法不起作用前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在面对一个问题,当我使用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,但仍然没有起作用.

如果我缺少需要添加到该文件或任何其他解决方案的问题,请让我知道.@H_404_11@谢谢@H_404_11@纳瓦布

解决方法

解决了问题:
-keep class com.android.internal.telephony.ITelephony { *; }

猜你在找的Android相关文章