鸿蒙OS开发实例:【工具类封装-页面路由】

电子说

1.3w人已加入

描述

import common from '@ohos.app.ability.common';
import router from '@ohos.router'

封装app内的页面之间跳转、app与app之间的跳转工具类

【使用要求】

DevEco Studio 3.1.1 Release
api 9

【使用示例】

import MyRouterUtil from '../common/utils/MyRouterUtil'
MyRouterUtil.openBrowser('https://www.baidu.com')


export default class MyRouterUtil {
  //日志过滤器
  static readonly LOG: string = "====MyRouterUtil"
  /**
   * 鸿蒙APP跳转到手机浏览器并打开网页
   * @param url 打开网页后展示的url地址
   */
  public static async openBrowser(url: string) {
    try {
      let want = {
        "action": "ohos.want.action.viewData",
        "entities": ["entity.system.browsable"],
        "uri": url,
        "type": "text/plain"
      }
      let context = getContext(this) as common.UIAbilityContext;
      await context.startAbility(want)
      console.info(MyRouterUtil.LOG, 'openBrowser', url)
    } catch (error) {
      console.error(MyRouterUtil.LOG, 'openBrowser', `${error.code},url:${url}`)
    }
  }

返回上一页

public static backPage() {
    router.back()
    console.info(MyRouterUtil.LOG, 'backPage', '判断栈内页面数:', router.getLength())
  }

在鸿蒙APP内打开网页
常用来打开隐私声明、用户协议等

@param url

  public static async openWeb(url: string) {
    try {
      await router.pushUrl({
        url: 'pages/Web', //这个页面是我自己创建的,用于展示网页。里面可根据url的参数决定是否显示原生的标题栏。
        params: {
          launchWebview: url
        }
      }, router.RouterMode.Standard)
      console.info(MyRouterUtil.LOG, 'openWeb', url)
    } catch (e) {
      console.error(MyRouterUtil.LOG, 'openWeb', JSON.stringify(e), 'url:', url)
    }
  }
鸿蒙OS开发更多内容↓点击HarmonyOS与OpenHarmony技术
鸿蒙技术文档开发知识更新库gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md在这。或+mau123789学习,是v喔

鸿蒙OS

获取当前内存中,跑转到web页时保存的参数

public static getParamsByWeb() {
    let url = JSON.parse(JSON.stringify(router.getParams())).launchWebview
    console.info(MyRouterUtil.LOG, 'getParamsByWeb', url)
    return url
  }

跳转到首页,需要在首页Index中

public static async openIndex() {
   try {
     await router.pushUrl({
       url: 'pages/Index'
     }, router.RouterMode.Single)
     console.info(MyRouterUtil.LOG, 'openIndex', 'succ')
     router.clear()
   } catch (e) {
     console.error(MyRouterUtil.LOG, 'openIndex', JSON.stringify(e))
   }
 }

跳转到登录页

public static async openLogin() {
    try {
      await router.pushUrl({
        url: 'pages/Login'
      }, router.RouterMode.Standard)
      console.info(MyRouterUtil.LOG, 'openLogin', 'succ')
    } catch (e) {
      console.error(MyRouterUtil.LOG, 'openLogin', JSON.stringify(e))
    }
  }
}

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分