# arouter-api-onActivityResult **Repository Path**: wangyingjun02/arouter-api-onActivityResult ## Basic Information - **Project Name**: arouter-api-onActivityResult - **Description**: No description available - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 19 - **Created**: 2023-09-27 - **Last Updated**: 2023-10-07 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Arouter ## 简介 Arouter是一款轻量且高效的适用于OpenHarmony的页面路由工具。 - 支持页面间路由跳转; - 支持带参数跳转及回调; - 支持配置跳转拦截器; - 支持预处理跳转与否。 ## 效果图 ![img.gif](img.gif) ## 下载安装 ```` ohpm install @ohos/arouteronactivityresult ```` OpenHarmony ohpm 环境配置等更多内容,请参考[如何安装 OpenHarmony ohpm 包](https://gitee.com/openharmony-tpc/docs/blob/master/OpenHarmony_har_usage.md) ## 使用说明 ### 路由跳转 #### 1.不传参跳转 通过Arouter.getInstance()创建路由对象,使用链式调用方法 build('')配置跳转的页面,navigation() 方法进行页面跳转。 ``` import {Arouter} from "@ohos/arouteronactivityresult"; Arouter.getInstance() .build("--/--") //需要跳转的地址 .navigation() ``` #### 2.传参跳转 在不传参跳转的基础上,跳转之前通过withParams()进行参数配置。 ``` import {Arouter} from "@ohos/arouteronactivityresult"; Arouter.getInstance() .build("--/--") //需要跳转的地址 .withParams({index:"--"}) .navigation() ``` #### 3.路由回调 路由回调需要配合NavigationCallback接口进行,在路由前的页面实现NavigationCallback接口 ``` import {NavigationCallback} from '@ohos/arouteronactivityresult' var callback:NavigationCallback = { onInterrupt(postcard){}, onArrival(postcard){}, onActivityResult(data){} } ``` 然后将callback传入 .navigationWithCallback()中进行跳转 ``` import {Arouter} from "@ohos/arouteronactivityresult"; Arouter.getInstance() .build("--")//需要跳转的地址 .navigationWithCallback(callback) ``` 在目标页面的onPageShow()生命周期中调用getPostcard()方法获取到指定的postcard ``` import router from '@ohos.router'; if (postcard == null) { postcard = Arouter.getInstance().getPostcard(router.getState().path + router.getState().name); } ``` 使用 postcard.getNavigationCallback() 方法调用对应的回调方法,即可回调源页面实现的方法 ``` postcard.getNavigationCallback().onActivityResult(params) ``` ### 路由拦截 #### 1.配置拦截器 在拦截器中的process()方法中实现页面的拦截,通过interceptorCallback.onInterrupt()中断跳转,interceptorCallback.onContinue()继续跳转。 ``` import {Postcard,IInterceptor,InterceptorCallback} from '@ohos/arouteronactivityresult'; var iInterceptor:IInterceptor= { process(postcard:Postcard, interceptorCallback:InterceptorCallback) { // 选择拦截的页面,若跳转时有该路径则进行拦截提示,若没有则直接跳转 if (Postcard.getUri() == 'pages/transit') { // 选择弹框 AlertDialog.show( { message: '被拦截了,点击继续跳转', primaryButton: { value: '取消', action: () => { // 中断跳转 interceptorCallback.onInterrupt(postcard) } }, secondaryButton: { value: '继续', action: () => { // 继续跳转 interceptorCallback.onContinue(postcard); } }, } ) } else { // 继续跳转 interceptorCallback.onContinue(postcard); } } } ``` #### 2.注册拦截器 ``` import {registerInterceptor} from '@ohos/arouteronactivityresult'; registerInterceptor(iInterceptor); ``` #### 3.移除拦截器 ``` import {unregisterInterceptor} from '@ohos/arouteronactivityresult'; unregisterInterceptor() ``` #### 4.配置绿色通道 在跳转前使用.setGreenChannel()方法跳过拦截(true:跳过拦截)。 ``` Arouter.getInstance() .build("--/--")//需要跳转的地址 .setGreenChannel(true) .navigation() ``` #### 5.配置预处理跳转与否 预处理:实现 PretreatmentService 接口中 onPretreatment 方法,并返回一个Boolean值(true:继续跳转,false:不跳转)。 ``` import {PretreatmentService} from '@ohos/arouteronactivityresult'; var pretreatmentService:PretreatmentService = { onPretreatment(postcard:Postcard):boolean{ return true } } ``` 在跳转前调用.setPretreatmentService() 方法,将 pretreatmentService传入 setPretreatmentService()方法中完成预处理功能。 ``` Arouter.getInstance() .build(this.router) .setPretreatmentService(pretreatmentService) .navigationWithCallback(callback) ``` ## 接口说明 ### Arouter |方法名|入参|接口描述| |:----|:----|:----| |build|string|配置页面跳转路径| |withParams|{ }|传入另一页面的参数| |navigation| |正常跳转| |navigationWithCallback|NavigationCallback|带回调跳转| |setGreenChannel|boolean|配置是否为绿色通道| |registerInterceptor|iInterceptor|注册拦截器| |unregisterInterceptor| |移除拦截器| |getNavigationCallback| |获取状态回调方法| |setUri|string|设置页面跳转路径| |getUri| |获取跳转的页面路径| |getParams| |获取跳转传递的参数| |getTag| |获取标签| |setTag|{ }|设置标签| |withFlags|boolean|设置flags| |getFlags|boolean|获得flags| |toString| |导出字符串| |setPretreatmentService|PretreatmentService|预处理| |getPostcard|页面路径|找到指定的postcard| ### 回调接口 |接口名|入参|接口描述| |:---:|:---:|:---:| |NavigationCallback.onArrival|Postcard|到达回调地| |NavigationCallback.onInterrupt|Postcard|回调中断| |NavigationCallback.onActivityResult|any|回调结果| |IInterceptor.process|Postcard,InterceptorCallback|拦截过程| |InterceptorCallback.onContinue|Postcard|拦截器回调继续| |InterceptorCallback.onInterrupt|Postcard|拦截器回调暂停| |PretreatmentService.onPretreatment|Postcard|预处理实现| ## 约束与限制 在下述版本验证通过: DevEco Studio: 3.1 Beta2(3.1.0.400), SDK: API9 Release(3.2.11.9) ## 目录结构 ```` |---- arouteronactivityresult | |---- src/main/ets/components/arouter # 路由跳转实现逻辑 | |---- index.ets # 对外接口 ```` ## 贡献代码 使用过程中发现任何问题都可以提 [Issue](https://gitee.com/openharmony-tpc/arouter-api-onActivityResult/issues) 给我们,当然,我们也非常欢迎你给我们发 [PR](https://gitee.com/openharmony-tpc/arouter-api-onActivityResult/pulls) 。 ## 开源协议 本项目基于 [Apache License 2.0](https://gitee.com/openharmony-tpc/arouter-api-onActivityResult/blob/master/LICENSE) ,请自由地享受和参与开源。