环信学习笔记(二) 博客分类: 环信学习笔记
程序员文章站
2024-03-24 22:39:46
...
学习笔记二:数据初始化和用户登录;
上一节讲的是系统环境的初始化和用户配置的初始化,那么接下来就是数据的初始化了,数据的初始化因为需要的时间比较长,放在了splash界面里面做,在一定的时间内数据初始化完成进入主界面或者跳转到登陆界面;
因为我们之前没有登录过,那么先跳转到登陆界面;
点击登录按钮后:
/** * 登录 * * @param view */ public void login(View view) { if (!CommonUtils.isNetWorkConnected(this)) { Toast.makeText(this, R.string.network_isnot_available, Toast.LENGTH_SHORT).show(); return; } currentUsername = usernameEditText.getText().toString().trim(); currentPassword = passwordEditText.getText().toString().trim(); if (TextUtils.isEmpty(currentUsername)) { Toast.makeText(this, R.string.User_name_cannot_be_empty, Toast.LENGTH_SHORT).show(); return; } if (TextUtils.isEmpty(currentPassword)) { Toast.makeText(this, R.string.Password_cannot_be_empty, Toast.LENGTH_SHORT).show(); return; } progressShow = true; final ProgressDialog pd = new ProgressDialog(LoginActivity.this); pd.setCanceledOnTouchOutside(false); pd.setOnCancelListener(new OnCancelListener() { @Override public void onCancel(DialogInterface dialog) { progressShow = false; } }); pd.setMessage(getString(R.string.Is_landing)); pd.show(); final long start = System.currentTimeMillis(); // 调用sdk登陆方法登陆聊天服务器 EMChatManager.getInstance().login(currentUsername, currentPassword, new EMCallBack() { @Override public void onSuccess() { if (!progressShow) { return; } // 登陆成功,保存用户名密码 DemoApplication.getInstance().setUserName(currentUsername); DemoApplication.getInstance().setPassword(currentPassword); try { // ** 第一次登录或者之前logout后再登录,加载所有本地群和回话 // ** manually load all local groups and EMGroupManager.getInstance().loadAllGroups(); EMChatManager.getInstance().loadAllConversations(); // 处理好友和群组 initializeContacts(); } catch (Exception e) { e.printStackTrace(); // 取好友或者群聊失败,不让进入主页面 runOnUiThread(new Runnable() { public void run() { pd.dismiss(); DemoHXSDKHelper.getInstance().logout(true,null); Toast.makeText(getApplicationContext(), R.string.login_failure_failed, 1).show(); } }); return; } // 更新当前用户的nickname 此方法的作用是在ios离线推送时能够显示用户nick boolean updatenick = EMChatManager.getInstance().updateCurrentUserNick( DemoApplication.currentUserNick.trim()); if (!updatenick) { Log.e("LoginActivity", "update current user nick fail"); } if (!LoginActivity.this.isFinishing() && pd.isShowing()) { pd.dismiss(); } // 进入主页面 Intent intent = new Intent(LoginActivity.this, MainActivity.class); startActivity(intent); finish(); } @Override public void onProgress(int progress, String status) { } @Override public void onError(final int code, final String message) { if (!progressShow) { return; } runOnUiThread(new Runnable() { public void run() { pd.dismiss(); Toast.makeText(getApplicationContext(), getString(R.string.Login_failed) + message, Toast.LENGTH_SHORT).show(); } }); } }); }
调用了EMChatManager的登录方法,我们跟踪进去看看怎么登录的;
EMChatManager调用了EMSessionManager的login方法,在登陆了服务器之后,保存好用户名密码,然后加载所有本地群和回话;登陆成功之后,转入主界面MainActivity;
推荐阅读
-
环信学习笔记之准备工作 博客分类: 环信学习笔记
-
环信demo学习之(一) 博客分类: 环信学习笔记
-
环信学习笔记(一) 博客分类: android
-
环信学习笔记(二) 博客分类: 环信学习笔记
-
core java学习笔记(二):有关接口 博客分类: JavaSE Java
-
我的derby学习笔记之二:嵌入式derby的JDBC驱动 博客分类: 我的学习 嵌入式DerbyJDBCJavaJDK
-
Struts2学习笔记之Maven构建Struts2项目(二) 博客分类: struts2 Struts2Mavenwebapp
-
log4j学习笔记(二) 博客分类: web开发学习笔记 log4jXMLApacheJava
-
Spring Cloud 学习笔记(二)——Netflix 博客分类: spring cloud
-
UML学习笔记(二) 博客分类: UML uml建模