本文旨在深入探讨华为鸿蒙HarmonyOS Next系统(截止目前API12)的技术细节,基于实际开发实践进行总结。
主要作为技术分享与交流载体,难免错漏,欢迎各位同仁提出宝贵意见和问题,以便共同进步。
本文为原创内容,任何形式的转载必须注明出处及原作者。

HarmonyOS 系统提供了丰富的系统应用,例如相机、文件管理、联系人、设置、电话、日历等。开发者可以通过应用跳转功能,方便地调用这些系统应用,提升应用的功能性和用户体验。

使用系统 Picker 组件

系统 Picker 组件是一种便捷的方式,可以让用户选择系统资源,例如图片、文件、联系人等,而不需要申请额外的权限。以下是一些常用的系统 Picker 组件:
1. 相机

  • CameraPicker:用于拍照和录制视频。
  • BarcodeScannerPicker:用于扫描二维码或条形码。
  • CardRecognizerPicker:用于识别各类证件信息。
    示例代码

    import { CameraPicker } from '@ohos.arkui.ability.camera';
    export default class EntryAbility extends common.UIAbility {
      onWindowStageCreate(windowStage: common.WindowStage) {
    const cameraPicker = new CameraPicker();
    cameraPicker.startCamera({
      type: CameraPickerType.PICTURE,
      onResult: (data) => {
        // 处理拍照结果
      }
    });
      }
    }

    2. 文件管理

  • DocumentViewPicker:用于访问和保存公共目录中的文档类文件。
  • AudioViewPicker:用于访问和保存公共目录的图片或视频文件。
    示例代码

    import { DocumentViewPicker } from '@ohos.arkui.ability.filemanager';
    export default class EntryAbility extends common.UIAbility {
      onWindowStageCreate(windowStage: common.WindowStage) {
    const documentPicker = new DocumentViewPicker();
    documentPicker.startDocumentView({
      type: DocumentViewPickerType.ALL,
      onResult: (data) => {
        // 处理文档选择结果
      }
    });
      }
    }

    3. 联系人

  • ContactsPicker:用于选择联系人。
    示例代码

    import { ContactsPicker } from '@ohos.arkui.ability.contacts';
    export default class EntryAbility extends common.UIAbility {
      onWindowStageCreate(windowStage: common.WindowStage) {
    const contactsPicker = new ContactsPicker();
    contactsPicker.startContacts({
      type: ContactsPickerType.ALL,
      onResult: (data) => {
        // 处理联系人选择结果
      }
    });
      }
    }

    使用特定接口

    除了系统 Picker 组件,HarmonyOS 还提供了其他一些接口,可以用于跳转系统应用:
    1. 设置

  • SettingAbility:用于打开设置应用。
    示例代码

    import { common } from '@ohos.app.ability.common';
    export default class EntryAbility extends common.UIAbility {
      onWindowStageCreate(windowStage: common.WindowStage) {
    const context = this.getContext(this) as common.UIAbilityContext;
    const want: common.Want = {
      action: 'ohos.intent.action.SHOW_SETTINGS',
      uri: "appsetting"
    };
    context.startAbility(want);
      }
    }

    2. 电话

  • TelephonyKit 提供了 makeCall 接口,可以用于拨打电话。
    示例代码

    import { Telephony } from '@ohos.arkui.ability.telephony';
    export default class EntryAbility extends common.UIAbility {
      onWindowStageCreate(windowStage: common.WindowStage) {
    const telephony = Telephony.getTelephony();
    telephony.makeCall("10086");
      }
    }

    3. 日历

  • CalendarAbility:用于打开日历应用。
    示例代码

    import { common } from '@ohos.app.ability.common';
    export default class EntryAbility extends common.UIAbility {
      onWindowStageCreate(windowStage: common.WindowStage) {
    const context = this.getContext(this) as common.UIAbilityContext;
    const want: common.Want = {
      action: 'ohos.intent.action.SHOW_CALENDAR',
      uri: "calendar"
    };
    context.startAbility(want);
      }
    }

    举(N)个栗子

    示例 1:使用 CameraPicker 拍照

    import { CameraPicker } from '@ohos.arkui.ability.camera';
    export default class EntryAbility extends common.UIAbility {
      onWindowStageCreate(windowStage: common.WindowStage) {
    const cameraPicker = new CameraPicker();
    cameraPicker.startCamera({
      type: CameraPickerType.PICTURE,
      onResult: (data) => {
        // 处理拍照结果
      }
    });
      }
    }

    示例 2:使用 DocumentViewPicker 选择文档

    import { DocumentViewPicker } from '@ohos.arkui.ability.filemanager';
    export default class EntryAbility extends common.UIAbility {
      onWindowStageCreate(windowStage: common.WindowStage) {
    const documentPicker = new DocumentViewPicker();
    documentPicker.startDocumentView({
      type: DocumentViewPickerType.ALL,
      onResult: (data) => {
        // 处理文档选择结果
      }
    });
      }
    }

    示例 3:使用 ContactsPicker 选择联系人

    import { ContactsPicker } from '@ohos.arkui.ability.contacts';
    export default class EntryAbility extends common.UIAbility {
      onWindowStageCreate(windowStage: common.WindowStage) {
    const contactsPicker = new ContactsPicker();
    contactsPicker.startContacts({
      type: ContactsPickerType.ALL,
      onResult: (data) => {
        // 处理联系人选择结果
      }
    });
      }
    }

    示例 4:拨打电话

    import { Telephony } from '@ohos.arkui.ability.telephony';
    export default class EntryAbility extends common.UIAbility {
      onWindowStageCreate(windowStage: common.WindowStage) {
    const telephony = Telephony.getTelephony();
    telephony.makeCall("10086");
      }
    }

    示例 5:打开设置应用

    import { common } from '@ohos.app.ability.common';
    export default class EntryAbility extends common.UIAbility {
      onWindowStageCreate(windowStage: common.WindowStage) {
    const context = this.getContext(this) as common.UIAbilityContext;
    const want: common.Want = {
      action: 'ohos.intent.action.SHOW_SETTINGS',
      uri: "appsetting"
    };
    context.startAbility(want);
      }
    }

    总结
    拉起系统应用是应用间跳转的重要功能,它能够方便地调用系统应用,提升应用的功能性和用户体验,我们可以根据实际需求选择合适的系统应用类型。


SameX
1 声望2 粉丝