本文旨在深入探讨华为鸿蒙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);
}
}
总结:
拉起系统应用是应用间跳转的重要功能,它能够方便地调用系统应用,提升应用的功能性和用户体验,我们可以根据实际需求选择合适的系统应用类型。