Android 中的 Twilio 问题 "Twilio.initialize() already called"

Twilio issue "Twilio.initialize() already called" in 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(Exception error)

提前致谢

我看到你在尝试 .release(). What happens if you use the .shutdown() method?这将终止所有连接,释放所有设备对象,并释放 SDK 使用的所有资源。

然后您可以在下次调用之前安全地再次调用 .initialize()

此外,您可以使用 .isInitialized() 来确定客户端是否准备就绪。

如果这些更改有任何帮助,请告诉我。