MCPcopy Index your code
hub / github.com/easemob/chat-android

github.com/easemob/chat-android @SDK_4.5.0

Chat with this repo
repository ↗ · DeepWiki ↗ · release SDK_4.5.0 ↗ · + Follow
3,423 symbols 9,839 edges 269 files 505 documented · 15%
What it actually does AI analysis from the code graph — generated when you open this
loading…
README

环信/EaseIM


简介

环信App是基于环信SDK开发的一款完整的类微信的聊天APP。展示的功能包括:注册新用户,用户登录,添加好友,单聊,群聊,发送文字,表情,语音,图片,地理位置等消息,以及实时音视频通话等。

创建应用并获取AppKey

运行demo之前,请务必先到环信管理后台创建您自己的应用并获取到Appkey,然后将获取到的Appkey配置到AndroidManifest.xml中。

```Java

``` 注册并创建应用的详情介绍,请移步环信官网:注册并创建应用

如何集成环信IM SDK

请移步环信官网:Android SDK 介绍及导入

体验环信App

请移步环信官网:场景DEMO及源码下载

应用架构介绍

环信APP采用谷歌官方建议的应用架构: 此架构有如下优点:

(1)UI和业务逻辑解耦。

(2)有效避免生命周期组件内存泄漏。

(3)提高模块可测试性。

(4)提高应用稳定性,有效降低以下异常发生概率。

对于架构各部分的理解:

(1)Activity/Fragment为View层,主要是负责数据的展示刷新和交互事件的触发。

(2)ViewModel 是用来保存应用UI数据的类,它会在配置变更(Configuration Change)后继续存在。

(3)LiveData是一个具有生命周期感知特性的可观察的数据保持类。

(4)Repository(仓库),主要是用于各种数据的业务请求操作( 网络请求和数据库查询), 可以把它看作 Model 层的 一部分。

(5)Room 是在 Sqlite 之上添加的一个抽象层, 以便实现更加强大的数据库访问,其可直接返回 LiveData, 用于监听数据返回。

工具要求

(1)Android Studio 3.2或更高版本。

(2)SDK targetVersion至少为26。

项目结构介绍

1、项目结构

项目分为主module和两个本地依赖库。

easeui是环信为了方便开发者快速使用环信SDK开发的UI库。

player是播放视频库,依赖于easeui。

2、主要功能介绍 项目是按照功能块进行项目分类,主要的功能块包含如下:

聊天,会议,联系人,会话,群组及聊天室,系统消息及关于环信等模块

chat模块,包含了聊天相关类,包含了聊天页面及其相关类,聊天历史类,音视频通话类等

conference模块,主要是会议相关类

contact模块,包含联系人列表,添加联系人,黑名单等

converstaion模块,主要是会话列表相关

dialog模块,是各类DialogFragment

group模块,主要包含群组和聊天室相关功能

login模块,主要包含登录,注册等功能

me模块,包含了个人信息,通用设置,开发者设置等功能

message模块,主要是系统消息功能

search模块,主要是各类搜索页面

3、重要类介绍

ChatActivity: 会话页面,核心类,主要逻辑写在 ChatFragment 中。ChatFragment 继承自 EaseChatFragment,EaseChatFragment实现了聊天列表功能,包含了发送文字,表情,图片等功能;ChatFragment展示了对EaseChatFragment的功能扩展实践。

DemoApplication:继承于系统的 Application 类,其 onCreate() 为整个程序的入口,相关的初始化操作都在这里面;

DemoHelper: Demo 全局帮助类,主要功能为初始化 EaseUI、环信 SDK 及 Demo 相关的实例,以及封装一些全局使用的方法;

MainActivity: 主页面,包含会话列表页面(ConversationListFragment)、联系人列表页(ContactListFragment)、设置页面(AboutMeFragment);

ConversationListFragment:会话列表类,继承自EaseConversationListFragment。ConversationListFragment展示了对EaseConversationListFragment类的扩展;

ContactListFragment:联系人列表类,继承自EaseContactListFragment。ContactListFragment展示了对EaseContactListFragment类的扩展。

环信IM基本功能介绍

消息

好友管理

群组管理

聊天室管理

多设备登录

环信关于第三方推送的集成介绍

第三方推送集成

设置当前登录用户的推送昵称

离线推送问题排查

可能会遇到的问题

1、如果遇到Error: Default interface methods are only supported starting with Android N (--min-api 24)问题

需要指定JDK版本

```Java android { ......

//指定jdk版本 compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 }

} ```

2、解决Android9.0以上强制使用https的问题

解决办法可以参考:StackOverFlow,也可以直接在AndroidManifest.xml文件的application标签中设置android:usesCleartextTraffic=“true”

Java <application android:usesCleartextTraffic="true" > ...... </application>

3、从github拉取源码,运行demo,遇到登录报缺失Appkey及注册demo崩溃

请先到环信管理后台创建您自己的应用并获取到Appkey,然后将获取到的Appkey配置到AndroidManifest.xml中。

```Java

``` 注册并创建应用的详情介绍,请移步环信官网:注册并创建应用

相关文档

请参考集成文档: http://docs-im.easemob.com/im/android/sdk/import

Extension points exported contracts — how you extend this code

OnCheckedChangeListener (Interface)
Interface definition for a callback to be invoked when the checked state of a compound button changed. [13 implementers]
app/src/main/java/com/hyphenate/chatdemo/common/widget/SwitchItemView.java
ConfirmClickListener (Interface)
(no doc) [18 implementers]
app/src/main/java/com/hyphenate/chatdemo/section/dialog/EditTextDialogFragment.java
DialogCallBack (Interface)
(no doc) [57 implementers]
app/src/main/java/com/hyphenate/chatdemo/common/interfaceOrImplement/DialogCallBack.java
OnSaveClickListener (Interface)
(no doc) [5 implementers]
app/src/main/java/com/hyphenate/chatdemo/section/group/fragment/GroupMemberDetailFragment.java
OnSaveClickListener (Interface)
(no doc) [5 implementers]
app/src/main/java/com/hyphenate/chatdemo/section/group/fragment/GroupEditFragment.java

Core symbols most depended-on inside this repo

findViewById
called by 488
app/src/main/java/com/hyphenate/chatdemo/section/base/BaseInitFragment.java
get
called by 294
app/src/main/java/com/hyphenate/chatdemo/common/livedatas/LiveDataBus.java
getInstance
called by 264
app/src/main/java/com/hyphenate/chatdemo/DemoHelper.java
observe
called by 185
app/src/main/java/com/hyphenate/chatdemo/common/livedatas/LiveDataBus.java
with
called by 168
app/src/main/java/com/hyphenate/chatdemo/common/livedatas/LiveDataBus.java
equals
called by 139
app/src/main/java/com/hyphenate/chatdemo/common/net/Resource.java
getInstance
called by 130
app/src/main/java/com/hyphenate/chatdemo/section/chat/ChatPresenter.java
setSource
called by 104
app/src/main/java/com/hyphenate/chatdemo/common/livedatas/SingleSourceLiveData.java

Shape

Method 3,052
Class 333
Interface 31
Enum 7

Languages

Java100%

Modules by API surface

app/src/main/java/com/hyphenate/chatdemo/common/utils/PreferenceManager.java101 symbols
app/src/main/java/com/hyphenate/chatdemo/common/model/DemoModel.java101 symbols
app/src/main/java/com/hyphenate/chatdemo/DemoHelper.java88 symbols
app/src/main/java/com/hyphenate/chatdemo/section/chat/ChatPresenter.java78 symbols
app/src/main/java/com/hyphenate/chatdemo/section/chat/fragment/ChatFragment.java65 symbols
app/src/main/java/com/hyphenate/chatdemo/common/repositories/EMGroupManagerRepository.java50 symbols
app/src/main/java/com/hyphenate/chatdemo/section/dialog/TimePickerDialogFragment.java48 symbols
app/src/main/java/com/hyphenate/chatdemo/section/conference/ConferenceInviteActivity.java42 symbols
app/src/main/java/com/hyphenate/chatdemo/section/chat/activity/SelectUserCardActivity.java42 symbols
app/src/main/java/com/hyphenate/chatdemo/common/manager/OptionsHelper.java41 symbols
app/src/main/java/com/hyphenate/chatdemo/section/dialog/DemoListDialogFragment.java40 symbols
app/src/main/java/com/hyphenate/chatdemo/section/group/activity/GroupMemberAuthorityActivity.java39 symbols

For agents

$ claude mcp add chat-android \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact

Ask about this repo answers extend the page