Методы отражения не работают при использовании proguard для приложения Android

Я столкнулся с проблемой, когда использую proguard для приложения, использующего 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 я могу использовать этот API, но когда я использую proguard для компиляции, он дает classcastexception. Я знаю, что мне нужно добавить что-то в файл proguard.cfg, и я также пробовал несколько вещей, например -dontshrink -dontoptimize, но все равно это не сработало.

Сообщите мне, если мне не хватает чего-то, что нужно добавить в этот файл, или любого другого решения этой проблемы. Спасибо Nawab

11
задан B770 24 July 2013 в 12:34
поделиться