HarmonyOS Next应用开发实战:ArkWeb使用介绍及使用举例
2024-12-18 15:33:33
393次阅读
0个评论
ArkWeb简介
ArkWeb(方舟Web)是HarmonyOS Next中提供的一个Web组件,主要用于在应用程序中显示Web页面内容。这个组件使得开发者可以在HarmonyOS应用中嵌入Web页面,从而降低开发成本,提升开发和运营效率。
使用场景
ArkWeb的常见使用场景包括:
- 应用集成Web页面:在应用内部页面中使用Web组件嵌入Web页面内容,这对于展示一些外部信息,如新闻、教程等非常适用。
- 浏览器网页浏览场景:在浏览器类应用中使用Web组件打开第三方网页,ArkWeb支持无痕模式浏览和广告拦截设置,为用户提供更好的浏览体验。
- 小程序:宿主应用可以使用Web组件来渲染小程序的页面,这使得小程序能够与鸿蒙生态系统更好地结合。
- 隐私政策和用户协议:对于这类常用场景,通常我们会提供url地址,通过ArkWeb的Web组件动态展示内容,减少重复开发。
代码示例
下面是一个简单的例子,展示如何在HarmonyOS应用中新建一个webPage页面来加载Web页面。
// 引入相关的模块
import webview from '@ohos.web.webview';
import { router } from '@kit.ArkUI'
import { HdNav } from '../common/HdNav';
// 定义组件WebViewPage
@Entry
@Component
struct WebViewPage {
  // 定义状态变量
  @State title: string | undefined = "";
  @State url: string = "";
  controller: webview.WebviewController = new webview.WebviewController();
  // 组件显示前获取路由参数
  aboutToAppear(): void {
    let params = router.getParams() as Record<string, string>;
    this.url = params["url"] as string;
  }
  // 构建组件的UI
  build() {
    Column() {
      // 使用HdNav组件构建导航栏
      HdNav({
        title: this.title
      })
      // 使用Web组件加载指定URL的网页
      Web({ src: this.url, controller: this.controller })
        .javaScriptAccess(true) // 允许JavaScript执行
        .onTitleReceive((event) => {
          this.title = event?.title; // 接收网页标题并更新
        })
        .layoutWeight(1) // 占据剩余空间
    }
    .justifyContent(FlexAlign.Start) // 顶部对齐
  }
}
跳转与返回
跳转到Web页面
要实现点击用户协议跳转到Web页面,可以通过router路由传递url参数:
.onClick(() => {
  router.pushUrl({
    url: 'pages/WebViewPage',
    params: {url: Constant.PRI_URL}
  });
})
返回功能
默认情况下,ArkWeb组件的Web页面没有左上角的返回按钮。为了解决这个问题,我们可以封装一个titleBar组件HdNav,并在其中添加返回按钮的功能:
import { router } from '@kit.ArkUI'
import { GlobalContext } from '../utils/GlobalContext'
@Component
export struct HdNav {
  @StorageProp('topHeight')
  topHeight: number = 0
  @Prop
  title: string | Resource = ''
  @Prop
  hasBorder: boolean = false
  @Prop leftIcon: ResourceStr = $r('app.media.icon_title_back') // 左侧图标,这里使用返回图标
  @Prop rightIcon: ResourceStr = $r('sys.media.ohos_ic_public_more')
  @BuilderParam titleBuilder: () => void
  @BuilderParam rightBuilder: () => void
  @Builder
  defaultMenu() {
  }
  // 构建导航栏的UI
  build() {
    Row() {
      // 返回按钮
      Image(this.leftIcon)
        .size({ width: 34, height: 36 })
        .onClick(() => {
          GlobalContext.getContext().setObject('isJumpPrivacy', false);
          router.back() // 点击返回按钮时,返回上一页
        })
        .padding({
          left: 15,
          right: 10,
          bottom: 10,
          top: 10
        })
      // 标题栏
      Row() {
        if (this.title) {
          Text(this.title)
            .fontWeight(600)
            .layoutWeight(1)
            .textAlign(TextAlign.Center)
            .fontSize(18)
            .maxLines(1)
            .textOverflow({ overflow: TextOverflow.Ellipsis })
        } else if (this.titleBuilder) {
          this.titleBuilder()
        }
      }
      .height(56)
      .layoutWeight(1)
      // 右侧图标或自定义内容
      if (this.rightBuilder) {
        Stack() {
          this.rightBuilder()
        }.padding(15)
      } else {
        Blank().width(24)
      }
    }
    .height(56 + this.topHeight)
    .width('100%')
    .border({
      width: { bottom: this.hasBorder ? $r('app.float.common_border_width') : 0 },
      color: $r('app.color.common_gray_bg')
    })
    .backgroundColor($r('app.color.white'))
  }
}
团队介绍
本文由坚果派团队创作。坚果派团队由一群热爱HarmonyOS/OpenHarmony的开发者组成,拥有12个华为HDE认证开发者,以及来自多个领域的30多位拥有大量粉丝的博主。团队专注于分享HarmonyOS/OpenHarmony、ArkUI-X、元服务、仓颉的相关内容,目前团队成员分布在包括北京、上海、南京、深圳、广州、宁夏等多个城市。已开发鸿蒙原生应用和三方库共60+,欢迎各位开发者与我们交流探讨。
版权声明
本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/yyz_1987/article/details/144561085
00
- 4回答
- 7粉丝
- 5关注
相关话题
- HarmonyOS Next应用开发实战:广告的使用介绍及避坑指南
- harmony OS NEXT-基本介绍及DevcoStudiop基本使用
- HarmonyOS 影视应用APP开发--配套的后台服务go-imovie项目介绍及使用
- 【HarmonyOS NEXT】 ArkUI常用布局及组件库介绍
- HarmonyOS NEXT 诗词元服务项目开发上架全流程实战(一、项目介绍及实现效果)
- 鸿蒙 Webview组件使用说明(ArkWeb)
- 元服务——介绍及环境搭建
- 鸿蒙5网页开发实战:用 ArkWeb 打造超酷应用的三个绝招
- 01-openHarmony 应用开发介绍
- 【HarmonyOS NEXT】权限申请及应用设置页跳转
- 【HarmonyOS NEXT】权限申请及应用设置页跳转
- HarmonyOS 5 开发环境介绍
- HarmonyOS NEXT应用开发指南:开屏广告的使用
- LoadingProgress组件的使用##HarmonyOS应用开发##
- 03-应用模型介绍

