Skip to content
能力中心
产品中心
应用市场
WebOffice
开发者后台

界面跳转

路由跳转

SDK提供路由跳转接口,支持跳转到对应的deeplink。

接口定义

UrlRouter

方法参数返回值说明
withcontext: Context?UrlRouter静态方法,获取UrlRouter实例
urlurl: String?UrlRouter网页url / woa deeplink
urluri: Uri?UrlRouter网页url / woa deeplink
bundlebundle: BundleUrlRouter设置携带的Bundle
startfinishAfterStart: Boolean
启动之后,是否需要关闭之前的页面
默认false
进行跳转,不返回结果,不支持的链接会有默认Toast
startWithResultfinishAfterStart: Boolean
启动之后,是否需要关闭之前的页面
默认false
Boolean跳转并返回处理结果,没有默认处理,不支持的链接不会默认Toast

代码示例

kotlin
UrlRouter.with(activity)
         .url("/")
         .start()

路由拦截器

如果需要拦截内部默认的跳转行为时, 可以通过实现拦截器拦截内部路由事件。

接口定义

KUrlInterceptor

方法参数返回值说明
interceptchain: Chain<KUrlChainData>ChainState<KUrlChainData>实现该方法,达到自定义跳转deeplink

KUrlChainData

参数类型说明
contextContext上下文
uriUriuri
bundleBundle?自定义数据
finishAfterStartBoolean默认false
启动之后,是否需要关闭之前的页面

代码示例

  1. 继承KUrlInterceptor,实现intercept方法:
kotlin
import com.kingsoft.kim.kit.KIM
import com.kingsoft.kim.kit.api.KIMISdkKitService
import com.kingsoft.kim.kit.extension.router.KUrlChainData
import com.kingsoft.kim.kit.extension.router.KUrlInterceptor
import java.util.*

class MyDeeplinkInterceptor : KUrlInterceptor() {

    override fun intercept(chain: Chain<KUrlChainData>): ChainState<KUrlChainData> {
        if (chain.data.type != MY_DEEP_LINK) {
            return chain.doNext(chain.data)
        }
        if (Objects.equals(PATH_LOCATE, chain.data.uri.path)) {
            //自定义的跳转逻辑
            //startFragment/startActivity
            return chain.end(chain.data)
        }
        return chain.doNext(chain.data)
    }


    private fun locateBySeq(chain: Chain<KUrlChainData>, chatId: String, seq: Long) {
        KIM.getService().getLinkUpService(KIMISdkKitService::class.java)
            ?.openChat(chain.data.context, chatId, "", seq)
    }

    companion object {
        private const val MY_DEEP_LINK = 15
        private const val PATH_LOCATE = "/my"
    }
}
  1. 注册MyDeeplinkInterceptor
kotlin
import com.kingsoft.kim.kit.extension.MyDeeplinkInterceptor
import com.kingsoft.kim.kit.extension.router.KUrlInterceptor
import com.wps.woa.lib.meatframe.KConf
import com.wps.woa.lib.meatframe.KIMInterceptor
import com.wps.woa.lib.meatframe.KIMSdkApplication
import com.wps.woa.lib.meatframe.confTo
import com.wps.woa.lib.meatframe.kConfOf

class AppCustomizeApplication : KIMSdkApplication() {
    override fun confInterceptor(): KConf<KIMInterceptor<out KIMInterceptor.ChainData>> {
        return kConfOf(
            KUrlInterceptor::class.java confTo MyDeeplinkInterceptor::class.java
        )
    }
}
  1. 在AndroidManifest.xml中自定义AppCustomizeApplication
kotlin
<meta-data
            android:name="com.kingsoft.kim.kit.sample.custom.AppCustomizeApplication"
            android:value="@string/kim_sdk_application" />