Как узнать, почему рефлексивный звонок зависает в приложении - PullRequest
0 голосов
/ 24 августа 2018

Я обнаружил проблему, связанную с тем, что на nexus 5x с android 8.1 и патчем безопасности от августа вызывая метод с помощью отражения зависает приложение, этот же вызов работает на 10 других устройствах с android 8.0, android 7.1.1 и т. Д. Возможно ли это? чтобы выяснить, что является причиной проблемы, когда я делаю вызов отражением, я даже не получаю исключение или какой-то полезный журнал, ничего, он просто зависает.

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O && Build.VERSION.SDK_INT < Build.VERSION_CODES.P) {
            try {
                final TelephonyManager telMan = (TelephonyManager) context.getSystemService(Context.TELEPHONY_SERVICE);
                final Class<?> classTemp = Class.forName(telMan.getClass().getName());
                final Method methodTemp = classTemp.getDeclaredMethod("getITelephony");
                methodTemp.setAccessible(true);
                ITelephony telephonyService = (ITelephony) methodTemp.invoke(telMan);                
                telephonyService.endCall();
                return true;
            } catch (Exception ex) {
               return false;
            }
        } else {

Заморозка происходит по адресу telephonyService.endCall (); и не исключение не выбрасывается «Получить поток дампа» показывает следующее:

"main@8285" prio=5 tid=0x2 nid=NA runnable
  java.lang.Thread.State: RUNNABLE
      at android.os.BinderProxy.transactNative(Binder.java:-1)
      at android.os.BinderProxy.transact(Binder.java:764)
      at com.android.internal.telephony.ITelephony$Stub$Proxy.endCall(ITelephony.java:2026)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...