1、封装跳转应用页面的管理类
import { bundleManager, common, Want } from '@kit.AbilityKit';
import { window } from '@kit.ArkUI';
import { LoggerManager } from './LoggerManager';
import { call } from '@kit.TelephonyKit';
import { BusinessError } from '@kit.BasicServicesKit';
import { Contact } from '../models/Contact';
import { NavEntryKey } from '../models/NavEntryKey';
/**
* App管理类
*/
export class AppManager {
private static readonly uri_info: string = NavEntryKey.APPLICATION_INFO_ENTRY // 应用设置页面
private static readonly uri_network: string = NavEntryKey.MOBILE_ENTRY // 移动网络设置页面
private static readonly uri_notification: string = NavEntryKey.SYSTEMUI_NOTIFICATION_SETTING // 通知设置页面
private static readonly uri_wifi: string = NavEntryKey.WIFI_ENTRY // Wifi设置页面
private static readonly uri_bluetooth: string = NavEntryKey.BLUETOOTH_ENTRY // 蓝牙设置页面
private static readonly uri_screen_refresh_rate : string = NavEntryKey.SCREEN_REFRESH_RATE_ENTRY // 屏幕刷新率设置页面
private static readonly uri_nfc: string = NavEntryKey.NFC_ENTRY // NFC设置页面
private static context: common.UIAbilityContext // common.UIAbilityContext,上下文
private static windowStage: window.WindowStage
/**
* 初始化方法,缓存全局变量,在UIAbility的onWindowStageCreate方法中初始化该方法。
* @param windowStage 窗口管理器
*/
static init(context: common.UIAbilityContext, windowStage: window.WindowStage) {
AppManager.context = context;
AppManager.windowStage = windowStage;
}
/**
* 获取上下文,common.UIAbilityContext
* @returns
*/
static getContext(): common.UIAbilityContext {
if (!AppManager.context) {
AppManager.context = getContext() as common.UIAbilityContext; //兜底
LoggerManager.error("context为空,请在UIAbility的onWindowStageCreate方法中调用AppManager的init方法初始化!");
}
return AppManager.context;
}
/**
* 获取主窗口
*/
static getMainWindow(): window.Window {
if (!AppManager.windowStage) {
LoggerManager.error("windowStage为空,请在UIAbility的onWindowStageCreate方法中调用AppUtil的init方法初始化!");
}
return AppManager.windowStage.getMainWindowSync();
}
/**
* 获取UIContext
* @returns
*/
static getUIContext(): UIContext {
return AppManager.getMainWindow().getUIContext();
}
/**
* 跳转应用设置页面
*/
static async toAppSetting(uri: string = AppManager.uri_info): Promise<void> {
let context = AppManager.getContext();
let want: Want = {
bundleName: 'com.huawei.hmos.settings', //设置应用bundleName
abilityName: 'com.huawei.hmos.settings.MainAbility', //设置应用abilityName
uri: uri, //目标页面
parameters: {
bundleName: context.abilityInfo.bundleName, //拉起方应用包名
pushParams: context.abilityInfo.bundleName, //拉起方应用包名
}
}
return await context.startAbility(want);
}
/**
* 跳转移动网络设置页面
*/
static toNetworkSetting(): Promise<void> {
return AppManager.toAppSetting(AppManager.uri_network);
}
/**
* 跳转WiFi设置页面
*/
static toWifiSetting(): Promise<void> {
return AppManager.toAppSetting(AppManager.uri_wifi);
}
/**
* 跳转通知设置页面
*/
static toNotificationSetting(): Promise<void> {
return AppManager.toAppSetting(AppManager.uri_notification);
}
/**
* 跳转蓝牙设置页面
*/
static toBluetoothSetting(): Promise<void> {
return AppManager.toAppSetting(AppManager.uri_bluetooth);
}
/**
* 跳转NFC设置页面
*/
static toNfcSetting(): Promise<void> {
return AppManager.toAppSetting(AppManager.uri_nfc);
}
/**
* 跳转屏幕刷新率设置页面
*/
static toScreenRefreshRateSetting(): Promise<void> {
return AppManager.toAppSetting(AppManager.uri_screen_refresh_rate);
}
//
// /**
// * 拉起护眼模式设置页面
// */
// static toEyeCareSetting(): Promise<void> {
// return AppManager.toAppSetting(AppManager.uri_eye_care);
// }
/**
* 拉起系统浏览器
*/
static async toWebBrowser(url: string): Promise<void> {
let context = AppManager.getContext();
let want: Want = {
action: 'ohos.want.action.viewData',
entities: ['entity.system.browsable'],
uri: url,
parameters: {
bundleName: context.abilityInfo.bundleName,
pushParams: context.abilityInfo.bundleName,
}
}
return await context.startAbility(want);
}
/**
* 拉起应用市场对应的应用详情界面
* @param bundleName 需要打开应用详情的应用的包名。
* @returns
*/
static async toAppGalleryDetail(bundleName: string): Promise<void> {
let context = AppManager.getContext();
let want: Want = {
action: 'ohos.want.action.appdetail',
uri: 'store://appgallery.huawei.com/app/detail?id=' + bundleName,
};
return await context.startAbility(want);
}
/**
* 拉起系统文件管理器
*/
static async toFileManagement(): Promise<void> {
let context = AppManager.getContext();
let want: Want = {
bundleName: 'com.huawei.hmos.filemanager',
abilityName: 'MainAbility'
};
return await context.startAbility(want);
}
// 打电话
static callPhone(phone: string) {
let context = AppManager.getContext();
call.makeCall(context, phone).then(() => {
console.log(`makeCall success`);
}).catch((err: BusinessError) => {
console.error(`makeCall fail, promise: err->${JSON.stringify(err)}`);
});
}
// 发短信
static sendSms(phone: string) {
let context = AppManager.getContext();
let params: Array<Object> = [new Contact("联系人姓名", Number(phone))];
let want: Want = {
bundleName: "com.ohos.mms",
abilityName: "com.ohos.mms.MainAbility",
parameters: {
contactObjects: JSON.stringify(params),
pageFlag: "conversation",
content: "hello" // 短信内容
}
};
context.startAbilityForResult(want).then((data) => {
console.log("Success" + JSON.stringify(data));
}).catch(() => {
console.log("error");
});
}
}
2、调用侧页面代码
Text('系统设置跳转')
Button('app设置')
.onClick(() => {
AppManager.toAppSetting()
})
Button('系统通知和状态栏设置')
.onClick(() => {
AppManager.toNotificationSetting()
})
Button('移动网络设置')
.onClick(() => {
AppManager.toNetworkSetting()
})
Button('WiFi设置')
.onClick(() => {
AppManager.toWifiSetting()
})
Button('蓝牙设置')
.onClick(() => {
AppManager.toBluetoothSetting()
})
Button('屏幕刷新率')
.onClick(() => {
AppManager.toScreenRefreshRateSetting()
})
Button('NFC设置')
.onClick(() => {
AppManager.toNfcSetting()
})
Button('应用市场详情界面')
.onClick(() => {
AppManager.toAppGalleryDetail('com.example.app')
})
Button('文件管理器')
.onClick(() => {
AppManager.toFileManagement()
})
Button('浏览器跳转-百度首页')
.onClick(() => {
AppManager.toWebBrowser('https://www.baidu.com')
})
Button('打电话')
.onClick(() => {
AppManager.callPhone('18888888888')
})
Button('发短信')
.onClick(() => {
AppManager.sendSms('18888888888')
})
3、其他相关的NavEntryKey
export enum NavEntryKey {
BLUETOOTH_ENTRY = 'bluetooth_entry', // HOME-蓝牙二级页面
WIFI_ENTRY = 'wifi_entry', // HOME-WLAN二级页面
MOBILE_ENTRY = 'mobile_network_entry', // HOME-移动网络二级页面
DISPLAY_ENTRY = 'display_settings', // HOME-显示和亮度二级页面
SCREEN_ZOOM = 'screen_zoom', // HOME-显示和亮度-显示大小三级页面
SCREEN_REFRESH_RATE_ENTRY = 'screen_refresh_rate_entry', // HOME-显示和亮度-屏幕刷新率三级页面
VOLUME_ENTRY = 'volume_settings', // HOME-声音二级页面
MORE_CONNECTION_ENTRY = 'more_connections_settings', // HOME-更多连接二级页面
BIOMETRICS_PASSWORD_ENTRY = 'biometrics_and_password_settings', // HOME-生物识别和密码二级页面
APPLICATION_SERVICE_ENTRY = 'application_and_service_settings', // HOME-应用与服务二级页面
STORAGE_ENTRY = 'storage_settings', // HOME-存储二级页面
PRIVACY_ENTRY = 'privacy_settings', // HOME-隐私二级页面
SYSTEM_UPDATE_ENTRY = 'system_and_updates', // HOME-系统和更新二级页面
ABOUT_DEVICE_ENTRY = 'about_device', // HOME-关于本机二级页面
WIFI_MENU_ENTRY = 'wifi_menu', // HOME-WLAN-连接三级页面
TIME_ZONE_ENTRY = 'time_zone_settings', // HOME-系统和更新-日期时间-时区-时区选择列表五级页面
DATA_TIME_ENTRY = 'date_and_time', // HOME-系统和更新-日期时间三级页面
SET_LANGUAGE_ENTRY = 'set_language', // HOME-系统和更新-语言和输入法-语言和输入法四级页面
LANGUAGE_REGION_ENTRY = 'set_language_region', // HOME-系统和更新-语言和输入法-语言和地区-语言和地区5级页面
RESET_ENTRY = 'reset_settings', // HOME-系统和更新-重置三级页面
DEVELOP_OPTION_ENTRY = 'developer_options_settings',// HOME-系统和更新-开发人员选项三级页面
CURRENT_USER_ENTRY = 'current_user', // HOME-用户和账户-当前登录(用户)三级页面
NFC_ENTRY = 'nfc_settings', // HOME-更多连接-NFC三级页面
HOTSPOT_ENTRY = 'hotspot_data_settings', // HOME-移动网络-个人热点界面
HOTSPOT_PWD_ENTRY = 'password_entry', // HOME-移动网络-个人热点-密码界面
HOTSPOT_CONNECTED_ENTRY = 'connected_device_entry', // HOME-移动网络-个人热点-已连接设备界面
HOTSPOT_SHARE_ENTRY = 'more_share_entry', // HOME-移动网络-个人热点-更多共享设置界面
LOCK_SCREEN_PASSWORD_ENTRY = 'lock_screen_password_title', // HOME-生物识别和密码-锁屏密码三级页面
APPLICATION_LIST_ENTRY = 'application_settings', // phone: HOME-应用与服务-应用管理三级页面 pc: HOME-应用管理二级页面
APPLICATION_INFO_ENTRY = 'application_info_entry', // phone: HOME-应用与服务-应用管理-具体应用四级页面 pc: HOME-应用管理-具体应用三级页面
LOCATION_MANAGER_ENTRY = 'location_manager_settings', // HOME-隐私-定位服务三级页面
EDIT_LANGUAGE_ENTRY = 'edit_language_entry', // HOME-系统和更新-语言和输入法-语言和地区-编辑(编译语言)五级页面
ADD_LANGUAGE_ENTRY = 'add_language_entry', // HOME-系统和更新-语言和输入法-语言和地区-添加语言五级页面
SELECT_REGION_ENTRY = 'select_region_entry', // HOME-系统和更新-语言和输入法-语言和地区-当前地区(选择地区)五级页面
RESET_FACTORY = 'reset_factory_settings', // HOME-系统和更新-重置-恢复出厂设置四级页面
RESET_NET = 'reset_net_settings', // HOME-系统和更新-重置-还原网络设置四级页面
ACCESSIBILITY_FEATURE_ENTRY = 'accessibility_feature', // Phone:HOME-辅助功能二级页面
ACCESSIBILITY_OPERATION_ENTRY = 'accessibility_operation_entry', // Phone:HOME-辅助功能-辅助功能快捷方式三级页
SYSTEMUI_NOTIFICATION_SETTING = "systemui_notification_settings" // Phone:HOME-通知和状态栏设置
}