HarmonyOS 鸿蒙Next 跳转短信、浏览器、设置、相机、拨号、应用市场等系统应用和已知bundlename、abilityname的三方应用。

HarmonyOS 鸿蒙Next 跳转短信、浏览器、设置、相机、拨号、应用市场等系统应用和已知bundlename、abilityname的三方应用。

介绍

跳转短信、浏览器、设置、相机、拨号、应用市场等系统应用和已知bundlename、abilityname的三方应用。

跳转相机拍照后返回照片展示。

跳转三方应用,模拟简易支付。

跳转web页,拉起相机和三方应用。

应用跳转案例源码链接

效果图

使用说明

打开应用,展示一列按钮,点击不同按钮会进行不同应用的跳转。有些跳转需要权限,每次跳转前会弹窗提示。

实现思路

点击跳转系统相机应用

  1. 构造startAbility()函数,用于启动一个特定的能力(ability)。构建一个Want对象,包含要执行的操作(action)和参数(parameters),其中参数包括调用应用的Bundle名称(callBundleName)和是否支持多模式(supportMultiMode)。尝试使用this.context.startAbilityForResult启动能力,并在回调中处理结果。如果启动过程中出现错误(err.code 存在),记录错误日志并返回。如果启动成功,从结果中获取资源URI(uri),记录成功日志,并根据uri是否存在执行不同操作:若uri存在,调用this.save2Local方法保存到本地;若uri不存在,显示 “拍摄失败” 的提示。
  startAbility(action: string, bundleName: string) {
    let want: Want = {
      action: action,
      parameters: {
        // 拍照完成后返回的应用BundleName
        callBundleName: bundleName,
        supportMultiMode: false
      }
    };
    try {
      this.context.startAbilityForResult(want, (err: BusinessError, result: common.AbilityResult) => {
        if (err.code) {
          // 处理业务逻辑错误
          hilog.error(0x0000, 'startAbilityForResult failed', `${err.code}${err.message}`);
          return;
        }
        let uri: string = result?.want?.parameters?.resourceUri as string;
        // 执行正常业务
        hilog.info(0x0000, 'Succeeded in starting ability for result', `${JSON.stringify(result)}${uri}`);
        if (uri) {
          // 保存到本地
          this.save2Local(uri);
        } else {
          promptAction.showToast({ message: '拍摄失败' })
        }
      });
    }
  }
  1. 构造save2Local()函数,将通过uri标识的文件保存到本地沙箱目录。
  save2Local(uri: string) {
    try {
      let file = fileIo.openSync(uri, fileIo.OpenMode.READ_ONLY);
      let prefix = uri.substring(uri.lastIndexOf('.') + 1);
      let tempFileName = getContext(this).filesDir + '/' + new Date().getTime() + '.' + prefix;
      let tempFile = fileIo.openSync(tempFileName, fileIo.OpenMode.READ_WRITE | fileIo.OpenMode.CREATE);
      fileIo.copyFileSync(file.fd, tempFile.fd);
      this.path = fileUri.getUriFromPath(tempFileName);
      this.isVideo = (prefix == 'mp4' || prefix == 'MP4');
      hilog.info(0x0000, 'resolve2Sandbox successful.', '');
      promptAction.showToast({ message: '拍摄成功' })
    }
  }

点击跳转Web应用

构造jumpTestApp()函数,启动一个特定的应用(通过bundleName和abilityName指定),并向其传递参数(parameters中的 message)。该函数返回一个Promise,在启动应用成功并获取到结果后,解析并返回结果中的 result 值;如果启动过程中出现错误,记录错误日志并返回 'failed'。

  async jumpTestApp(): Promise<string> {
    let wantInfo: Want = {
      deviceId: '', 
      bundleName: 'com.example.test1',
      abilityName: 'EntryAbility',
      parameters: {
        message: '待支付¥100'
      }
    }
    return this.context.startAbilityForResult(wantInfo).then((abilityResult) => {
      return abilityResult.want!.parameters!.result.toString();
    })
  }

工程目录

entry/src/main/ets
│  ├──components
│  │  ├──JumpAppStore.ets                      // 跳转应用市场逻辑页
│  │  ├──JumpCamera.ets                        // 跳转相机逻辑页
│  │  └──JumpWeb.ets                           // 跳转web逻辑页
│  ├──entryability
│  │  └──EntryAbility.ets
│  ├──pages
│  │   └──Index.ets                            // 首页
│  ├──utils                                    
│  │  └──SimpleAlertDialog.ets                 // 弹窗工具类

约束与限制

  • 本示例仅支持标准系统上运行,支持设备:华为手机。
  • 手机ROM版本:NOH-AN00 204.1.0.72(SP2DEVC00E72R1P1)以上
  • IDE:DevEco Studio 5.0.0及以上
  • SDK:HarmoneyOS NEXT Developer Preview2 B.0.72(API 12)及以上

更多关于HarmonyOS 鸿蒙Next 跳转短信、浏览器、设置、相机、拨号、应用市场等系统应用和已知bundlename、abilityname的三方应用。的实战教程也可以访问 https://www.itying.com/category-93-b0.html

1 回复

更多关于HarmonyOS 鸿蒙Next 跳转短信、浏览器、设置、相机、拨号、应用市场等系统应用和已知bundlename、abilityname的三方应用。的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


HarmonyOS 鸿蒙Next的场景化代码是基于其分布式架构设计的,旨在实现不同设备间的无缝协同。这种代码编写方式注重模块化和服务化,使得开发者能够根据不同场景快速组合和调用相应的功能和服务。

在HarmonyOS中,场景化代码通常涉及以下几个关键点:

  1. Ability:作为鸿蒙应用的基本组成单元,Ability分为FA(Feature Ability)和PA(Particle Ability)两种,分别对应传统应用中的功能和轻量级服务。

  2. Intent:用于在不同Ability间传递信息,实现功能调用和页面跳转,是场景化编程中的重要机制。

  3. 服务化组件:鸿蒙系统支持将应用功能以服务的形式暴露出来,供其他应用或设备调用,这极大地增强了系统的灵活性和可扩展性。

  4. 分布式数据管理:允许应用在不同设备上共享数据,确保用户在不同场景下的一致体验。

  5. 设备协同框架:提供了丰富的API和工具,帮助开发者实现多设备间的协同工作,如多屏协同、跨设备流转等。

如果开发者在编写HarmonyOS鸿蒙Next场景化代码时遇到问题,建议详细查阅官方文档和示例代码,确保对系统架构和编程模型有深入理解。如果问题依旧没法解决请联系官网客服,官网地址是:https://www.itying.com/category-93-b0.html。

回到顶部