Выпуск Twilio "Twilio.initialize() уже вызван" в Android

Ниже мой код логин Twilio клиент работает

public void login(final String clientName,
                          final boolean allowOutgoing,
                          final boolean allowIncoming) {
            if (loginListener != null)
                loginListener.onLoginStarted();

            this.lastClientName = clientName;
            this.lastAllowOutgoing = allowOutgoing;
            this.lastAllowIncoming = allowIncoming;

            if (!twilioSdkInited) {
                if (twilioSdkInitInProgress)
                    return;

                twilioSdkInitInProgress = true;
                Twilio.setLogLevel(Log.DEBUG);

                Twilio.initialize(context, new Twilio.InitListener() {
                    @Override
                    public void onInitialized() {

                        Log.e(TAG, "onInitialized");
                        twilioSdkInited = true;
                        twilioSdkInitInProgress = false;
                        obtainCapabilityToken(clientName, allowOutgoing, allowIncoming);
                    }

                    @Override
                    public void onError(Exception error) {
                        Log.e(TAG, "onInitialized onError :" + error.toString());
                        Log.e(TAG, " onInitialized onError : isTokenExpired is Blank");
                        twilioSdkInitInProgress = false;

                        if (loginListener != null)
                            loginListener.onLoginError(error);
                    }

                    @Override
                    protected void finalize() throws Throwable {

                        Log.e(TAG, "@call finalize()");
                        if (device != null)
                            device.release();
                        if (connection != null)
                            connection.disconnect();
                        super.finalize();
                    }
                });
            } else {
                Log.e(TAG, "twilioSdkInited obtainCapabilityToken");
                obtainCapabilityToken(clientName, allowOutgoing, allowIncoming);
            }

Ниже журналы ошибки генерируют некоторое время при перезапуске моего приложения.

07-06 10:10:14.265 32611-32611/com.reach.communications E/NewCallScreenActivity: @call onLoginStarted
07-06 10:10:14.265 32611-32611/com.reach.communications I/PJSIP: 10:10:14.265 sip_endpoint.c !Module "mod-pjsua-log" unregistered
07-06 10:10:14.265 32611-32611/com.reach.communications I/PJSIP: 10:10:14.265 sip_endpoint.c  Module "mod-pjsua-log" registered
07-06 10:10:14.265 32611-32611/com.reach.communications E/BasicPhone: onInitialized onError :java.lang.RuntimeException: Twilio.initialize() already called
07-06 10:10:14.265 32611-32611/com.reach.communications E/BasicPhone:  onInitialized onError : isTokenExpired is Blank
07-06 10:10:14.265 32611-32611/com.reach.communications E/NewCallScreenActivity: @call onLoginError :java.lang.RuntimeException: Twilio.initialize() already called
07-06 10:10:14.265 32611-32611/com.reach.communications E/NewCallScreenActivity: @Call State idle

Как справиться, если я получаю эту ошибку и повторно войдите в систему клиента. или Как заново инициализировать twilio.

onError (ошибка исключения)

заранее спасибо

1 ответ

Решение

Я вижу, вы пытаетесь .release(), Что произойдет, если вы используете .shutdown() метод? Это прервет все соединения, освободит все объекты Device и освободит все ресурсы, используемые SDK.

Тогда вы можете смело звонить .initialize() снова до следующего звонка.

Кроме того, вы можете использовать .isInitialized() определить, готов ли Клиент или нет.

Пожалуйста, дайте мне знать, если любое из этих изменений поможет.

Другие вопросы по тегам