可以通过跳转到系统设置页面来实现此功能:
【背景知识】
应用间跳转概述:应用跳转是指从一个应用跳转至另外一个应用,传递相应的数据、执行特定的功能。通过应用跳转可以满足用户更为真实丰富的场景诉求、提升交互体验的便捷性和流畅性。应用跳转的类型可分为拉起指定应用与拉起指定类型的应用,关于拉起指定应用,目前官方推荐指定应用链接并通过openLink或startAbility接口来拉起目标应用页面的方式。
Want的定义与用途:
Want是一种对象,用于在应用组件之间传递信息。常见的使用场景是作为startAbility()方法的参数。
在启动目标应用组件时,会通过显式Want或者隐式Want进行目标应用组件的匹配,匹配规则就是调用方传入的Want参数中设置的参数与目标应用组件声明的配置文件(module.json5)进行匹配。
- 显式Want:在启动目标应用组件时,调用方传入的Want参数中指定了abilityName和bundleName,称为显式Want。当有明确处理请求的对象时,如需要拉起某个指定应用组件时,通常会用到显示Want。
- 隐式Want:在启动目标应用组件时,调用方传入的Want参数中未指定abilityName,称为隐式Want。当需要处理的对象不明确时,如需使用其他应用提供的某个能力,而不关心提供该能力的具体应用,通常用会到隐式Want。
【解决方案】
通常跳转系统应用的场景有两类:跳转系统设置的各级页面以及跳转其他系统应用。
- 跳转系统设置的各级页面Want参数需指定bundleName与abilityName,如需跳转设置相关子页面,除了指定bundleName与abilityName外,通常还需要填写对应uri与parameters,如下表格给出了常用各类设置子页面的uri与parameters配置信息:
页面 |
bundleName |
abilityName |
uri |
parameters |
WLAN页 |
com.huawei.hmos.settings |
com.huawei.hmos.settings.MainAbility |
wifi_entry |
/ |
蓝牙页 |
com.huawei.hmos.settings |
com.huawei.hmos.settings.MainAbility |
bluetooth_entry |
/ |
位置页 |
com.huawei.hmos.settings |
com.huawei.hmos.settings.MainAbility |
location_manager_settings |
/ |
指定应用信息页 |
com.huawei.hmos.settings |
com.huawei.hmos.settings.MainAbility |
application_info_entry |
APPbundleName |
应用与元服务页 |
com.huawei.hmos.settings |
com.huawei.hmos.settings.MainAbility |
application_info_entry |
/ |
声音和振动 |
com.huawei.hmos.settings |
com.huawei.hmos.settings.MainAbility |
volume_settings |
/ |
注:"/"代表无需配置;"APPbundleName"为指定应用的bundleName,获取方式可参考官网。
跳转系统设置页及子页面可参考如下代码进行配置:
// 跳转系统设置页及子页面配置参考
let want: Want = {
bundleName: "com.huawei.hmos.settings",
abilityName: "com.huawei.hmos.settings.MainAbility",
uri:"xxxx",
parameters: {
pushParams: "xxxxx"
}
}
context.startAbility(want)
// 跳转到设置的声音和振动;包含铃声、声音模式、免打扰等
let want: Want = {
bundleName: 'com.huawei.hmos.settings',
abilityName: 'com.huawei.hmos.settings.MainAbility',
uri: "volume_settings",
parameters: {
// 传对应应用的包名
pushParams: 'com.example.gotosettings'
};
};
context.startAbility(want)
- 跳转其他系统应用,例如浏览器、应用市场、短信、联系人、文件管理器等,Want参数配置情况各有不同,各类系统应用Want相关配置可参考如下表格:
应用 |
action |
bundleName |
abilityName |
uri |
parameters |
浏览器 |
ohos.want.action.viewData |
com.huawei.hmos.browser |
MainAbility |
需自行构建,可参考下列代码 |
/ |
文件管理器 |
/ |
com.huawei.hmos.filemanager |
MainAbility |
/ |
/ |
短信 |
/ |
com.ohos.mms |
com.ohos.mms.MainAbility |
/ |
需自行构建,可参考下列代码 |
联系人 |
/ |
com.ohos.contacts |
com.ohos.contacts.MainAbility |
/ |
需自行构建,可参考下列代码 |
应用市场 |
/ |
/ |
/ |
store://appgallery.huawei.com/app/detail?id=C${APPID} |
/ |
注:"/"代表无需配置;"APPID"为应用在AGC上对应的APPID
代码参考如下:
// 跳转浏览器并传递参数
let want: Want = {
action: "ohos.want.action.viewData", // 表示要执行操作
bundleName: 'com.huawei.hmos.browser', // 系统浏览器对应bundleName
abilityName: 'MainAbility', // 系统浏览器对应abilityName
uri: "https://www.huawei.com/", // 传递的参数
}
// 跳转应用市场指定应用
let want: Want = {
uri: "store: // appgallery.huawei.com/app/detail?id=C+应用在应用商城的ID"
}
// 跳转短信并传递参数
export class Contact { // 构造联系人
contactsName: string;
telephone: number;
constructor(contactsName: string, telephone: number) {
this.contactsName = contactsName;
this.telephone = telephone;
}
}
let params: Array<Object> = [new Contact("张三", 12345678912)]
let want:Want = {
bundleName: 'com.ohos.mms', // 短信对应的bundleName
abilityName: 'com.ohos.mms.MainAbility', // 短信对应的abilityName
parameters: {
contactObjects: JSON.stringify(params), // 联系人信息
content:"xxxxxxxxxx", // 短信内容
pageFlag: 'conversation'
}
}
// 跳转联系人并传递参数
let want: Want = {
bundleName: 'com.ohos.contacts',
abilityName: 'com.ohos.contacts.MainAbility',
parameters: {
'phoneNumber': 'xxxxxxx', // 需新增联系人电话
'contactName': 'xxxx', // 需新增联系人姓名
'pageFlag': 'page_flag_save_contact'
}
}
// 跳转文件管理器
let want: Want = {
bundleName: 'com.huawei.hmos.filemanager',
abilityName: 'MainAbility',
}
let context = getContext(this) as common.UIAbilityContext
context.startAbility(want)
【总结】
跳转系统应用最重要的是要确认Want配置信息的正确性,如bundleName、abilityName、uri、parameters,再通过startAbility来跳转。
除了通过startAbility传入Want参数来跳转系统应用这种方式外,如果还需要跳转其他上述未提及系统应用,可参考官网推荐的方式实现。