#1 登录的时候报 User is alreay login
#2 登录报错 200
这个问题,大部分在集成环信的用户都会有这个问题,原因这个英文翻译一下也知道什么意思
环信文档给的登录只提供了登录的方法
EMClient.getInstance().login(userName,password,newEMCallBack() {//回调@OverridepublicvoidonSuccess(){
EMClient.getInstance().groupManager().loadAllGroups();
EMClient.getInstance().chatManager().loadAllConversations();
Log.d("main","登录聊天服务器成功!");
}@OverridepublicvoidonProgress(intprogress, String status){
}@OverridepublicvoidonError(intcode, String message){
Log.d("main","登录聊天服务器失败!");
}
});
在这里要注意“只是登录的方法”详细的实现登录的逻辑是需要自己去实现的
登录调用EMClient.getInstance().login(username, password, callback);此方法是一个异步方法,所以需要设置EMCallback回调来接收登录结果;注册调用EMClient.getInstance().createAccount(username, password);此方法是同步方法,需要自己创建新线程去调用,不能放在UI线程直接调用;
登录之前需要去做判断当前是否已经有登录的账号,如果有的话值直接跳过登录,进入您登录之后跳转的界面,如果是没有登录在去调用登录的方法,很多用户忽略了这个步骤导致了“User is alreay login”报错。
登录和注册都在LoginActivity类里,这个方法中对调用环信sdk的方法返回错误值做了一些判断,具体错误信息可以参考官方文档:http://www.easemob.com/apidoc/android/chat3.0/classcom_1_1hyphenate_1_1_e_m_error.html
仔细想一下跟最常用的通讯示例qq和微信是一样的,你之前登录过账号之后,没有去调用退出,再次登录肯定是进入的之前登录的账号。而不是直接进入的登录界面,不多说,看代码:
在环信demo中的初始化之后有做判断当前知否登录
有登录就跳过登录(即在登录之前去判断当前是已登录过,登录过就去跳过)
在启动页也就是我们经常说的广告页也是要去判断