Android

界面跳转

更新时间: 2025/09/11 14:15:56

网易云信 IM UIKit 提供统一路由(XKitRouter),支持参数传递和回调,实现界面的跳转与模块之间的解耦。该路由系统设计灵活,可满足各种复杂场景下的导航需求。

接口介绍

在 IM UIKit 中,您可以通过统一的路由机制实现界面跳转:

  • 场景一:在 IM UIKit 内置界面之间跳转
  • 场景二:从 IM UIKit 跳转至您应用中的自定义界面

所有界面跳转都可通过调用 navigate 方法实现,方法原型如下:

Java// 带参数的界面跳转
XKitRouter.withKey(path)
    .withParam(paramKey, param)
    .withContext(context)
    .navigate();

// 不带参数的界面跳转
XKitRouter.withKey(path)
    .withContext(context)
    .navigate();
参数
类型 说明

path

String

目标界面的路由地址:

paramKey String 传递到目标界面的参数名称。
param Serializable 传递到目标界面的参数值,支持基本数据类型、字符串、序列化对象等。
context Context Activity 上下文。

跳转至内置界面

本节介绍 IM UIKit 内置界面的路由地址列表以及部分界面的跳转示例。

网易云信 IM UIKit 提供两套风格的 UI 组件库,可任意选择一种使用。两种风格 UI 界面的路由地址不同,请按需选择对用风格的对应界面路由地址,实现跳转。

  • 路由地址组成imkit://{所属模块}/{Endpoint}

  • UIKit 变量所属类RouterConstant

每个 UI 服务都注册了两个版本的路由,从而允许应用程序选择偏好的样式。

graph TB
    
    subgraph "通用版 UI 路由"
        F1["PATH_FUN_CHAT_P2P_PAGE"]
        F2["PATH_FUN_CHAT_TEAM_PAGE"]
        F3["PATH_FUN_CONTACT_PAGE"]
        F4["PATH_FUN_CONVERSATION_PAGE"]
    end

    subgraph "基础版 UI 路由"
        N1["PATH_CHAT_P2P_PAGE"]
        N2["PATH_CHAT_TEAM_PAGE"]
        N3["PATH_CONTACT_PAGE"]
        N4["PATH_CONVERSATION_PAGE"]
    end
    
    subgraph "通用版 Activities"
        F1 --> FA1["FunChatP2PActivity"]
        F2 --> FA2["FunChatTeamActivity"]
        F3 --> FA3["FunContactActivity"]
        F4 --> FA4["FunConversationActivity"]
    end
    
    subgraph "基础版 Activities"
        N1 --> NA1["ChatP2PActivity"]
        N2 --> NA2["ChatTeamActivity"]
        N3 --> NA3["ContactActivity"]
        N4 --> NA4["ConversationActivity"]
    end

详细的使用示例如下所示:

基础版 UI 风格
通讯录界面
通讯录界面
ContactActivity
contact/contactList.page
需传递目标界面参数:否
使用示例:
// 跳转到通讯录界面
XKitRouter.withKey(RouterConstant.PATH_CONTACT_PAGE).withContext(context).navigate();
通讯录人员选择器
通讯录人员选择器
ContactSelectorActivity
contact/selector.page
需传递目标界面参数:否
使用示例:
// 跳转到通讯录人员选择器
XKitRouter.withKey(RouterConstant.PATH_CONTACT_SELECTOR_PAGE)
    // 选择列表是需要过滤的账号 ID,可不传,默认不过滤
    .withParam(RouterConstant.SELECTOR_CONTACT_FILTER_KEY, accountList)
    // 单次选择数量限制,可不传
    .withParam(RouterConstant.KEY_CONTACT_SELECTOR_MAX_COUNT, 20)
    // 选择数量限制检查,true 如果超过则 Toast 提示,默认 false
    .withParam(RouterConstant.KEY_CONTACT_SELECTOR_FINAL_CHECK_COUNT_ENABLE, true)
    .withContext(BaseTeamSettingActivity.this)
    .navigate(launcher);
单击展开查看如何获取通讯录用户选择结果 Java 示例代码。
// 声明选择结果的 launcher
private ActivityResultLauncher launcher = registerForActivityResult(
    new ActivityResultContracts.StartActivityForResult(),
    result -> {
        if (result.getResultCode() != RESULT_OK) {
            return;
        }
        Intent data = result.getData();
        if (data == null) {
            return;
        }
        // 选择用户
        ArrayList selectedUser =
            data.getStringArrayListExtra(REQUEST_CONTACT_SELECTOR_KEY);
    });
添加好友界面
添加好友界面
AddFriendActivity
contact/addFriend.page
需传递目标界面参数:否
使用示例:
// 跳转到添加好友界面
XKitRouter.withKey(RouterConstant.PATH_ADD_FRIEND_PAGE).withContext(context).navigate();
用户信息界面
用户信息界面
UserInfoActivity
contact/userInfo.page
需传递目标界面参数:是
使用示例:
// 跳转到用户信息界面
String accoutId = "user123456"; // 用户 ID
XKitRouter.withKey(RouterConstant.PATH_USER_INFO_PAGE)
          // 选择列表是需要过滤的账号 ID,可不传,默认不过滤
          .withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, accoutId).withContext(context).navigate()
黑名单界面
黑名单界面
BlackListActivity
contact/blackList.page
需传递目标界面参数:否
使用示例:
// 跳转到黑名单界面
XKitRouter.withKey(RouterConstant.PATH_MY_BLACK_PAGE).withContext(context).navigate();
我的群组界面
我的群组界面
TeamListActivity
contact/teamList.page
需传递目标界面参数:否
使用示例:
// 跳转到我的群组界面
XKitRouter.withKey(RouterConstant.PATH_MY_TEAM_PAGE).withContext(context).navigate();
系统通知界面
系统通知界面
VerifyListActivity
contact/verifyList.page
需传递目标界面参数:否
使用示例:
// 跳转到系统通知界面
XKitRouter.withKey(RouterConstant.PATH_MY_NOTIFICATION_PAGE).withContext(context).navigate();
单聊界面
单聊界面
ChatP2PActivity
chat/p2pChat.page
需传递目标界面参数:是
使用示例:
// 跳转到单聊界面
String accoutId = "user123456" // 用户 ID
XKitRouter.withKey(RouterConstant.PATH_CHAT_P2P_PAGE).withParam(RouterConstant.CHAT_ID_KRY, accoutId).withContext(context).navigate();
群聊界面
群聊界面
ChatTeamActivity
chat/teamChat.page
需传递目标界面参数:是
使用示例:
// 跳转到群聊界面
String teamId = "team123456" // 群组 ID
XKitRouter.withKey(RouterConstant.PATH_CHAT_TEAM_PAGE).withParam(RouterConstant.CHAT_ID_KRY, teamId).withContext(context).navigate();
聊天内容搜索界面
聊天内容搜索界面
ChatSearchActivity
chat/searchMessage.page
需传递目标界面参数:是
使用示例:
// 跳转到聊天内容搜索界面
V2NIMTeam team = ... //群信息
XKitRouter.withKey(RouterConstant.PATH_CHAT_SEARCH_PAGE).withParam(RouterConstant.CHAT_KRY, team).withContext(context).navigate();
群设置界面
群设置界面
TeamSettingActivity
team/teamSetting.page
需传递目标界面参数:是
使用示例:
// 跳转到群设置界面
String teamId = "team123456"; // 群组 ID
XKitRouter.withKey(RouterConstant.PATH_TEAM_SETTING_PAGE).withParam(RouterConstant.KEY_TEAM_ID, teamId).withContext(context).navigate();
好友搜索界面
好友搜索界面
GlobalSearchActivity
search/search.page
需传递目标界面参数:否
使用示例:
// 跳转到好友搜索界面
XKitRouter.withKey(RouterConstant.PATH_GLOBAL_SEARCH_PAGE)
          .withContext(context)
          .navigate();
会话列表界面
会话列表界面
ConversationActivity
conversation/conversation.page
需传递目标界面参数:否
使用示例:
// 跳转到会话列表界面
XKitRouter.withKey(RouterConstant.PATH_CONVERSATION_PAGE).withContext(context).navigate();
通用版 UI 风格
通讯录界面
通讯录界面
FunContactActivity
contact/contactList.page
需传递目标界面参数:否
使用示例:
// 跳转到通讯录界面
XKitRouter.withKey(RouterConstant.PATH_FUN_CONTACT_PAGE).withContext(context).navigate();
通讯录人员选择器
通讯录人员选择器
FunContactSelectorActivity
contact/selector.page
需传递目标界面参数:否
使用示例:
// 跳转到通讯录人员选择器
XKitRouter.withKey(RouterConstant.PATH_FUN_CONTACT_SELECTOR_PAGE)
    // 选择列表是需要过滤的账号 ID,可不传,默认不过滤
    .withParam(RouterConstant.SELECTOR_CONTACT_FILTER_KEY, accountList)
    // 单次选择数量限制,可不传
    .withParam(RouterConstant.KEY_CONTACT_SELECTOR_MAX_COUNT, 20)
    // 选择数量限制检查,true 如果超过则 Toast 提示,默认 false
    .withParam(RouterConstant.KEY_CONTACT_SELECTOR_FINAL_CHECK_COUNT_ENABLE, true)
    .withContext(BaseTeamSettingActivity.this)
    .navigate(launcher);
单击展开查看如何获取通讯录用户选择结果 Java 示例代码。
// 声明选择结果的 launcher
private ActivityResultLauncher launcher = registerForActivityResult(
    new ActivityResultContracts.StartActivityForResult(),
    result -> {
        if (result.getResultCode() != RESULT_OK) {
            return;
        }
        Intent data = result.getData();
        if (data == null) {
            return;
        }
        // 选择用户
        ArrayList selectedUser =
            data.getStringArrayListExtra(REQUEST_CONTACT_SELECTOR_KEY);
    });
添加好友界面
添加好友界面
FunAddFriendActivity
contact/addFriend.page
需传递目标界面参数:否
使用示例:
// 跳转到添加好友界面
XKitRouter.withKey(RouterConstant.PATH_FUN_ADD_FRIEND_PAGE).withContext(context).navigate();
用户信息界面
用户信息界面
FunUserInfoActivity
contact/userInfo.page
需传递目标界面参数:是
使用示例:
// 跳转到用户信息界面
String accoutId = "user123456"; // 用户 ID
XKitRouter.withKey(RouterConstant.PATH_FUN_USER_INFO_PAGE)
          // 选择列表是需要过滤的账号 ID,可不传,默认不过滤
          .withParam(RouterConstant.KEY_ACCOUNT_ID_KEY, accoutId).withContext(context).navigate()
黑名单界面
黑名单界面
FunBlackListActivity
contact/blackList.page
需传递目标界面参数:否
使用示例:
// 跳转到黑名单界面
XKitRouter.withKey(RouterConstant.PATH_FUN_MY_BLACK_PAGE).withContext(context).navigate();
我的群组界面
我的群组界面
FunTeamListActivity
contact/teamList.page
需传递目标界面参数:否
使用示例:
// 跳转到我的群组界面
XKitRouter.withKey(RouterConstant.PATH_FUN_MY_TEAM_PAGE).withContext(context).navigate();
系统通知界面
系统通知界面
FunVerifyListActivity
contact/verifyList.page
需传递目标界面参数:否
使用示例:
// 跳转到系统通知界面
XKitRouter.withKey(RouterConstant.PATH_FUN_MY_NOTIFICATION_PAGE).withContext(context).navigate();
单聊界面
单聊界面
FunChatP2PActivity
chat/p2pChat.page
需传递目标界面参数:是
使用示例:
// 跳转到单聊界面
String accoutId = "user123456" // 用户 ID
XKitRouter.withKey(RouterConstant.PATH_FUN_CHAT_P2P_PAGE).withParam(RouterConstant.CHAT_ID_KRY, accoutId).withContext(context).navigate();
群聊界面
群聊界面
FunChatTeamActivity
chat/teamChat.page
需传递目标界面参数:是
使用示例:
// 跳转到群聊界面
String teamId = "team123456" // 群组 ID
XKitRouter.withKey(RouterConstant.PATH_FUN_CHAT_TEAM_PAGE).withParam(RouterConstant.CHAT_ID_KRY, teamId).withContext(context).navigate();
聊天内容搜索界面
聊天内容搜索界面
FunChatSearchActivity
chat/searchMessage.page
需传递目标界面参数:是
使用示例:
// 跳转到聊天内容搜索界面
V2NIMTeam team = ... //群信息
XKitRouter.withKey(RouterConstant.PATH_FUN_CHAT_SEARCH_PAGE).withParam(RouterConstant.CHAT_KRY, team).withContext(context).navigate();
群设置界面
群设置界面
FunTeamSettingActivity
team/teamSetting.page
需传递目标界面参数:是
使用示例:
// 跳转到群设置界面
String teamId = "team123456"; // 群组 ID
XKitRouter.withKey(RouterConstant.PATH_FUN_TEAM_SETTING_PAGE).withParam(RouterConstant.KEY_TEAM_ID, teamId).withContext(context).navigate();
好友搜索界面
好友搜索界面
FunSearchActivity
search/search.page
需传递目标界面参数:否
使用示例:
// 跳转到好友搜索界面
XKitRouter.withKey(RouterConstant.PATH_FUN_GLOBAL_SEARCH_PAGE)
          .withContext(context)
          .navigate();
会话列表界面
会话列表界面
FunConversationActivity
conversation/conversation.page
需传递目标界面参数:否
使用示例:
// 跳转到会话列表界面
XKitRouter.withKey(RouterConstant.PATH_FUN_CONVERSATION_PAGE).withContext(context).navigate();

跳转至新增界面

IM UIKit 提供的路由能力,支持根据业务需求新增界面,并实现从 IM UIKit 的内置界面跳转至新增界面。

  1. 在通过路由实现跳转前,需调用 registerRouter 方法注册该新增界面的路由地址。

    方法原型如下:

    JavaXKitRouter.registerRouter(path, clazz)
    
    参数 类型 说明
    path String 注册界面对应的路由地址。
    clazz Class<? extends Activity> Activity 界面类。

    路由的界面注册机制采用覆盖模式,即相同的 Path,后注册的界面会覆盖之前注册的界面。

  2. 调用 navigate 方法进行界面跳转,具体参数说明参考上文的 接口介绍

此文档是否对你有帮助?
有帮助
去反馈
  • 接口介绍
  • 跳转至内置界面
  • 跳转至新增界面