0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

jf_46214456 来源:jf_46214456 作者:jf_46214456 2024-03-28 16:16 次阅读

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开发更多内容↓点击HarmonyOSOpenHarmony技术
鸿蒙技术文档开发知识更新库gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md在这。或+mau123789学习,是v喔

搜狗高速浏览器截图20240326151450.png

获取当前内存中,跑转到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))
    }
  }
}

审核编辑 黄宇

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

    关注

    126

    文章

    7774

    浏览量

    142708
  • OpenHarmony
    +关注

    关注

    25

    文章

    3658

    浏览量

    16132
  • 鸿蒙OS
    +关注

    关注

    0

    文章

    188

    浏览量

    4367
收藏 人收藏

    评论

    相关推荐

    鸿蒙OS开发:典型页面场景【一次开发,多端部署】(功能开发

    应用开发至少包含两部分工作: UI页面开发和底层功能开发(部分需要联网的应用还会涉及服务端开发)。前面章节介绍了如何解决
    的头像 发表于 05-28 17:32 517次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b>:典型<b class='flag-5'>页面</b>场景【一次<b class='flag-5'>开发</b>,多端部署】(功能<b class='flag-5'>开发</b>)

    鸿蒙开发接口UI界面:【@ohos.router (页面路由)】

    本模块首批接口从API version 8开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 > - 页面路由需要在页面渲染完成之后才能调用,在onInit和onReady生命周期中
    的头像 发表于 05-28 16:26 828次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>开发</b>接口UI界面:【@ohos.router (<b class='flag-5'>页面</b><b class='flag-5'>路由</b>)】

    鸿蒙OS开发:典型页面场景【一次开发,多端部署】(资源使用)

    页面开发过程中,经常需要用到颜色、字体、间距、图片等资源,在不同的设备或配置中,这些资源的值可能不同。
    的头像 发表于 05-28 09:44 907次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b>:典型<b class='flag-5'>页面</b>场景【一次<b class='flag-5'>开发</b>,多端部署】(资源使用)

    鸿蒙OS开发:典型页面场景【一次开发,多端部署】(设置应用页面

    本小节以“设置”应用页面为例,介绍如何使用自适应布局能力和响应式布局能力适配不同尺寸窗口。
    的头像 发表于 05-27 10:33 1063次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b>:典型<b class='flag-5'>页面</b>场景【一次<b class='flag-5'>开发</b>,多端部署】(设置应用<b class='flag-5'>页面</b>)

    鸿蒙OS开发:典型页面场景【一次开发,多端部署】实战(设置典型页面

    本示例展示了设置应用的典型页面,其在小窗口和大窗口有不同的显示效果,体现一次开发、多端部署的能力。
    的头像 发表于 05-27 09:36 1092次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b>:典型<b class='flag-5'>页面</b>场景【一次<b class='flag-5'>开发</b>,多端部署】实战(设置典型<b class='flag-5'>页面</b>)

    鸿蒙OS开发:【一次开发,多端部署】(音乐专辑页面

    基于自适应和响应式布局,实现一次开发、多端部署音乐专辑页面
    的头像 发表于 05-25 16:21 728次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b>:【一次<b class='flag-5'>开发</b>,多端部署】(音乐专辑<b class='flag-5'>页面</b>)

    鸿蒙OS崛起,鸿蒙应用开发工程师成市场新宠

    应用的形态也在发生着翻天覆地的变化。作为全球领先的移动操作系统和智能终端制造商,华为公司自主研发的鸿蒙OS应运而生,致力于构建一个统一的分布式操作系统,为各行各业的应用开发带来全新的可能性。 一、
    发表于 04-29 17:32

    OpenHarmony开发实例:【鸿蒙.bin文件烧录】

    如何使用HiBurn工具烧录鸿蒙的.bin文件到Hi3861开发板。
    的头像 发表于 04-14 09:54 391次阅读
    OpenHarmony<b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【<b class='flag-5'>鸿蒙</b>.bin文件烧录】

    鸿蒙OS开发实例:【HarmonyHttpClient】网络框架

    鸿蒙上使用的Http网络框架,里面包含纯Java实现的HttpNet,类似okhttp使用,支持同步和异步两种请求方式;还有鸿蒙版retrofit,和Android版Retrofit相似的使用,解放双手般优雅使用注解、自动解析json
    的头像 发表于 04-12 16:58 800次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【HarmonyHttpClient】网络框架

    鸿蒙OS开发实例:【应用状态变量共享】

    平时在开发的过程中,我们会在应用中共享数据,在不同的页面间共享信息。虽然常用的共享信息,也可以通过不同页面中组件间信息共享的方式,但有时使用应用级别的状态管理会让开发工作变得简单。
    的头像 发表于 04-03 15:09 1242次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【应用状态变量共享】

    鸿蒙OS开发实例:【页面传值跳转】

    本篇主要介绍如何在HarmonyOS中,在页面跳转之间如何传值 HarmonyOS 的页面指的是带有@Entry装饰器的文件,其不能独自存在,必须依赖UIAbility这样的组件容器 如下是官方关于State模型开发模式
    的头像 发表于 03-29 20:16 2147次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【<b class='flag-5'>页面</b>传值跳转】

    鸿蒙OS开发实例:【工具封装-http请求】

    ;@ohos.promptAction';** **封装HTTP接口请求,提供格式化的响应信息输出功能。 使用 DevEco Studio 3.1.1 Release 及以上版本,API 版本为 api 9 及以上
    的头像 发表于 03-27 22:32 1279次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b><b class='flag-5'>开发</b><b class='flag-5'>实例</b>:【<b class='flag-5'>工具</b><b class='flag-5'>类</b><b class='flag-5'>封装</b>-http请求】

    鸿蒙OS开发实例:【工具封装-emitter组件间通信】

    `MyEmitterUtil` 是一个针对 HarmonyOS 的事件驱动编程封装,主要用于组件间的通信和数据传递。
    的头像 发表于 03-27 22:13 627次阅读

    鸿蒙APP开发实战:【Api9】拍照、拍视频;选择图片、视频、文件工具

    鸿蒙开发过程中,经常会进行系统调用,拍照、拍视频、选择图库图片、选择图库视频、选择文件。今天就给大家分享一个工具
    的头像 发表于 03-26 16:27 722次阅读
    <b class='flag-5'>鸿蒙</b>APP<b class='flag-5'>开发</b>实战:【Api9】拍照、拍视频;选择图片、视频、文件<b class='flag-5'>工具</b><b class='flag-5'>类</b>

    鸿蒙OS和开源鸿蒙什么关系?

    内核,其他功能都以模块的形式存在。     华为用的是鸿蒙OS 我们都知道,华为手机的鸿蒙OS是可以运行安卓软件的,是因为系统中有安卓兼容层,所以可以简单这么理解:
    的头像 发表于 01-30 15:44 1082次阅读
    <b class='flag-5'>鸿蒙</b><b class='flag-5'>OS</b>和开源<b class='flag-5'>鸿蒙</b>什么关系?