在我的应用中使用QuickBlox进行视频通话时,我遇到了崩溃。
qbInitSession()
和qbSignIn()
似乎是罪魁祸首:
这是堆栈跟踪:
android.os.NetworkOnMainThreadException
at android.os.StrictMode$AndroidBlockGuardPolicy.onNetwork(StrictMode.java:1303)
at com.android.org.conscrypt.Platform.blockGuardOnNetwork(Platform.java:300)
at com.android.org.conscrypt.OpenSSLSocketImpl.shutdownAndFreeSslNative(OpenSSLSocketImpl.java:1194)
at com.android.org.conscrypt.OpenSSLSocketImpl.close(OpenSSLSocketImpl.java:1189)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.shutdown(Unknown Source)
at org.jivesoftware.smack.tcp.XMPPTCPConnection.shutdown(Unknown Source)
at org.jivesoftware.smack.AbstractXMPPConnection.disconnect(Unknown Source)
at org.jivesoftware.smack.AbstractXMPPConnection.disconnect(Unknown Source)
at com.quickblox.chat.QBChatService.logout(Unknown Source)
at com.app.sesh.utils.QuickBloxSignupSignin.qbChatLogin(QuickBloxSignupSignin.java:232)
at com.app.sesh.utils.QuickBloxSignupSignin.access$500(QuickBloxSignupSignin.java:60)
at com.app.sesh.utils.QuickBloxSignupSignin$4.onSuccess(QuickBloxSignupSignin.java:191)
at com.app.sesh.utils.QuickBloxSignupSignin$4.onSuccess(QuickBloxSignupSignin.java:177)
at com.quickblox.auth.session.Query.notifySuccess(Unknown Source)
at com.quickblox.auth.session.Query$VersionEntityCallback.completedWithResponse(Unknown Source)
at com.quickblox.auth.session.Query.completedWithResponse(Unknown Source)
at com.quickblox.core.server.HttpRequestRunnable$1.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:154)
at android.app.ActivityThread.main(ActivityThread.java:6169)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:888)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:778)
11-20 14:26:15.975 29278-29278/com.app.sesh D/SMACK: XMPPConnection closed (2)
答案 0 :(得分:0)
StrictMode线程策略用于较旧的API,现在android折旧了那些代码,请将您的代码更新为当前版本代码,请参考以下链接 networkonmainthreadexception
答案 1 :(得分:0)
在您的情况下,只需使用QuickBlox Android SDK中的异步方法。例如,使用下一个登录代码:
QBUsers.signIn(qbUser).performAsync(new QBEntityCallback<QBUser>() {
@Override
public void onSuccess(QBUser qbUser, Bundle bundle) {
//success signin
}
@Override
public void onError(QBResponseException e) {
//error during signin
}
});