Подтвердить что ты не робот

Методы отражения не работают при использовании 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, но все же это не сработало.

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

4b9b3361

Ответ 1

Это решает проблему:

-keep class com.android.internal.telephony.ITelephony { *; }