为什么 IMKit / CallKit 群组视频通话选择联系人页面为空?

群组视频通话选择联系人页面需要设置下用户信息

4.x SDK

RongCallKit.setGroupMemberProvider(new RongCallKit.GroupMembersProvider() {
    @Override
    public ArrayList<String> getMemberList(String groupId, RongCallKit.OnGroupMembersResult result) {
        //可以根据groupId 获取群组内成员id 并返回
        ArrayList<String> list=new ArrayList();
        list.add("userid1");
        list.add("userid2");
        list.add("userid3");
        result.onGotMemberList(list);
        return list;
    }
});
RongIM.setUserInfoProvider(new RongIM.UserInfoProvider() {
    @Override
    public UserInfo getUserInfo(String s) {
        UserInfo userInfo=new UserInfo(s,"用户"+s,uri);
        RongIM.getInstance().refreshUserInfoCache(userInfo);
        return userInfo;
    }
},true);

5.x SDK

第一种:

    //使用这个方法会展示选择联系人页面,但是不会展示用户名
RongCallKit.setGroupMemberProvider(new RongCallKit.GroupMembersProvider() {
    @Override
    public ArrayList<String> getMemberList(String groupId, RongCallKit.OnGroupMembersResult result) {
        //可以根据groupId 获取群组内成员id 并返回
        ArrayList<String> list=new ArrayList();
        list.add("userid1");
        list.add("userid2");
        list.add("userid3");
        result.onGotMemberList(list);
        return list;
    }
});

配合设置用户信息提供者使用,即可展示用户名

RongUserInfoManager.getInstance().setUserInfoProvider(new UserDataProvider.UserInfoProvider() {
    @Override
    public UserInfo getUserInfo(String s) {
        UserInfo userInfo=new UserInfo(s,"小花1"+s, Uri.parse(""));


        return userInfo;
    }
},true);

第二种

RongIM.getInstance().setGroupMembersProvider(new RongMentionManager.IGroupMembersProvider() {
    @Override
    public void getGroupMembers(String s, RongMentionManager.IGroupMemberCallback iGroupMemberCallback) {
    
        //s 是群组id 可以根据群组id 获取群组内用户id,根据id获取用户信息并返回
        //代码如下
        List<UserInfo> list=new ArrayList();
        UserInfo userInfo=new UserInfo("userid1","小花22", Uri.parse(""));
        ...
        list.add(userInfo);
        list.add...
        
        iGroupMemberCallback.onGetGroupMembersResult(list);
    }
});

也可以配合设置群组用户信息提供者使用,会展示群组用户信息提供者返回的用户信息

 RongUserInfoManager.getInstance().setGroupUserInfoProvider(new UserDataProvider.GroupUserInfoProvider() {
    @Override
    public GroupUserInfo getGroupUserInfo(String s, String s1) {
    // s 为群组id s1 为群成员id
        GroupUserInfo groupUserInfo = new GroupUserInfo(s, s1, "小花"+s1);

        return groupUserInfo;
    }
},true);