首先按照融云官方文档,接入SDK,基于IMKit,具体接入就不多废话啦啦…
此时AndroidManifest.xml在遇到第一个问题点:
1、android.support.v4.content.FileProvider冲突
<provider
android:name="android.support.v4.content.FileProvider"
android:authorities="您的应用包名.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/rc_file_path" />
</provider>
解决方案:
- 重写FileProvider文件
package com.android.chat; import
android.support.v4.content.FileProvider;
public class ChatFileProvider extends FileProvider {
}
- AndroidManifest.xml注册
<provider
android:name=".chat.ChatFileProvider"
android:authorities="com.droi.mjpet.FileProvider"
android:exported="false"
android:grantUriPermissions="true">
<meta-data
android:name="android.support.FILE_PROVIDER_PATHS"
android:resource="@xml/rc_file_path" />
</provider>
2、最近聊天列表头像设置为圆形
rc_item_conversation.xml
rc_item_message.xml
查找AsyncImageView,修改属性 app:RCShape=“circle”
3、修改聊天界面消息背景框
android/IMKit/src/main/res/drawable-xhdpi/
4、设置自己的信息
RongIM.getInstance().setCurrentUserInfo(new UserInfo(userId, userNickName, Uri.parse(userPortraitUri)));
5、设置好友信息列表
- 实现RongIM.UserInfoProvider接口
@Override public UserInfo
getUserInfo(String s) {
itemMap = MJ_PetUtils.queryAllData(mContext);
PetItem item = itemMap.get(s);
if(item != null) {
return new UserInfo(item.getId(), item.getPetName(), Uri.parse(item.getPic()));
}
return null; }
- 设置监听,具体可参照官方Demo
RongIM.setUserInfoProvider(this, true);
6、设置群昵称和头像 - 实现RongIM.GroupInfoProvider接口
@Override
public Group getGroupInfo(String s) {
itemGroupMap = RNBridgeModule.groupList;
if (itemGroupMap != null) {
FriendItem info = itemGroupMap.get(s);
if (info != null) {
return new Group(info.getId(), info.getPetName(), Uri.parse(info.getPic()));
}
}
return null;
}
- 设置监听
RongIM.setGroupInfoProvider(this, true);
7、未读消息监听
-
实现IUnReadMessageObserver接口
@Override
public void onCountChanged(int count) {
RNBridgeModule.nativeCountChanged(count);
} -
设置监听
RongIM.getInstance().addUnReadMessageCountChangedObserver(this, mConversationsTypes);