1# @ohos.app.ability.StartOptions (StartOptions) 2 3StartOptions可以作为[startAbility()](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability-1)的入参,用于指定目标Ability的窗口模式。 4 5> **说明:** 6> 7> - 本模块首批接口从API version 9 开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 8> 9> - 本模块接口仅可在Stage模型下使用。 10 11## 导入模块 12 13```ts 14import { StartOptions } from '@kit.AbilityKit'; 15``` 16 17## 属性 18 19**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 20 21| 名称 | 类型 | 只读 | 可选 | 说明 | 22| -------- | -------- | -------- | -------- | -------- | 23| windowMode<sup>12+<sup> | number | 否 | 是 | 启动Ability时的窗口模式,详见[WindowMode](./js-apis-app-ability-abilityConstant.md#windowmode12)。 | 24| displayId | number | 否 | 是 | 屏幕ID模式。默认是0,表示当前屏幕。<br>**原子化服务API**:从API version 11开始,该接口支持在原子化服务中使用。 | 25| withAnimation<sup>11+</sup> | boolean | 否 | 是 | 启动Ability时是否具有动画效果。true表示具有动画效果,false表示不具有动画效果。<br>**约束:**<br>1.该功能仅在2in1和tablet设备上生效。<br>2.调用方与目标方必须为同一应用。 | 26| windowLeft<sup>11+</sup> | number | 否 | 是 | 窗口左边的位置,单位为px。取值范围为[0, maxWindowWidth]。如果设置为负值,系统会默认设置为0。配置该字段时,建议同时配置windowTop。 | 27| windowTop<sup>11+</sup> | number | 否 | 是 | 窗口顶部的位置,单位为px。取值范围为[0, maxWindowHeight]。如果设置为负值,系统会默认设置为0。配置该字段时,建议同时配置windowLeft。 | 28| windowWidth<sup>11+</sup> | number | 否 | 是 | 窗口的宽度,单位为px。取值范围为[minWindowWidth, maxWindowWidth]。 | 29| windowHeight<sup>11+</sup> | number | 否 | 是 | 窗口的高度,单位为px。取值范围为[minWindowHeight, maxWindowHeight]。 | 30| processMode<sup>12+</sup> | [contextConstant.ProcessMode](js-apis-app-ability-contextConstant.md#processmode12) | 否 | 是 | 进程模式。<br>**约束:**<br>1.该功能仅在2in1和tablet设备上生效。<br>2.仅在[UIAbilityContext.startAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability-1)中生效。<br>3.processMode和startupVisibility必须同时设置。 | 31| startupVisibility<sup>12+</sup> | [contextConstant.StartupVisibility](js-apis-app-ability-contextConstant.md#startupvisibility12) | 是 | 否 | Ability启动后的可见性。<br>**约束:**<br>1.该功能仅在2in1和tablet设备上生效。<br>2.仅在[UIAbilityContext.startAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability-1)中生效。<br>3.processMode和startupVisibility必须同时设置。 | 32| startWindowIcon<sup>14+</sup> | [image.PixelMap](../../reference/apis-image-kit/js-apis-image.md#pixelmap7) | 否 | 是 | 在应用内启动UIAbility时,启动页所显示的图标。如果未配置该字段,则默认采用module.json5文件中startWindowIcon字段的配置。<br>**约束:**<br>1.该功能仅在2in1和tablet设备上生效。<br>2.仅在[UIAbilityContext.startAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability-1)中生效。<br>3.图片数据大小限制为600M。| 33| startWindowBackgroundColor<sup>14+</sup> | string | 否 | 是 | 在应用内启动UIAbility时,启动页所显示的背景颜色。固定为ARGB格式, 如:`#E5FFFFFF`。如果未配置该字段,则默认采用module.json5文件中startWindowBackground字段的配置。<br>**约束:**<br>1.该功能仅在2in1和tablet设备上生效。<br>2.仅在[UIAbilityContext.startAbility](js-apis-inner-application-uiAbilityContext.md#uiabilitycontextstartability-1)中生效。 | 34| supportWindowModes<sup>14+</sup> | Array\<[bundleManager.SupportWindowMode](./js-apis-bundleManager.md#supportwindowmode)> | 否 | 是 | 在应用内启动UIAbility时,指定窗口是否显示最大化/窗口化/分屏按键。如果未配置该字段,则默认采用该UIAbility对应的[module.json5配置文件](../../quick-start/module-configuration-file.md)中[abilities标签](../../quick-start/module-configuration-file.md#abilities标签)的supportWindowMode字段取值。<br>- FULL_SCREEN:支持全屏模式。<br>- FLOATING:支持悬浮窗模式。<br>- SPLIT:支持分屏模式。通常需要配合FULL_SCREEN或FLOATING一起使用,不建议只配置SPLIT。当仅配置SPLIT时,2in1设备上的窗口默认为悬浮窗模式,支持进入分屏模式;tablet设备上的窗口默认为全屏模式,支持进入分屏模式。 <br>**约束:**<br><!--RP1-->该功能仅在2in1和tablet设备上生效。<!--RP1End-->| 35| minWindowWidth<sup>17+</sup> | number | 否 | 是 | 窗口最小的宽度,单位为px,可以通过[getWindowLimits](../apis-arkui/js-apis-window.md#getwindowlimits11)获得当前窗口的尺寸限制。<br>**约束:**<br/>仅在2in1和tablet设备上生效。 | 36| minWindowHeight<sup>17+</sup> | number | 否 | 是 | 窗口最小的高度,单位为px,可以通过[getWindowLimits](../apis-arkui/js-apis-window.md#getwindowlimits11)获得当前窗口的尺寸限制。<br>**约束:**<br/>仅在2in1和tablet设备上生效。 | 37| maxWindowWidth<sup>17+</sup> | number | 否 | 是 | 窗口最大的宽度,单位为px,可以通过[getWindowLimits](../apis-arkui/js-apis-window.md#getwindowlimits11)获得当前窗口的尺寸限制。<br>**约束:**<br/>仅在2in1和tablet设备上生效。 | 38| maxWindowHeight<sup>17+</sup> | number | 否 | 是 | 窗口最大的高度,单位为px,可以通过[getWindowLimits](../apis-arkui/js-apis-window.md#getwindowlimits11)获得当前窗口的尺寸限制。<br>**约束:**<br/>仅在2in1和tablet设备上生效。 | 39 40**示例:** 41 42 ```ts 43 import { UIAbility, Want, StartOptions, bundleManager } from '@kit.AbilityKit'; 44 import { BusinessError } from '@kit.BasicServicesKit'; 45 import { image } from '@kit.ImageKit'; 46 47 export default class EntryAbility extends UIAbility { 48 onForeground() { 49 let want: Want = { 50 deviceId: '', 51 bundleName: 'com.example.myapplication', 52 abilityName: 'EntryAbility' 53 }; 54 55 let color = new ArrayBuffer(0); 56 let imagePixelMap: image.PixelMap; 57 image.createPixelMap(color, { 58 size: { 59 height: 100, 60 width: 100 61 } 62 }).then((data) => { 63 imagePixelMap = data; 64 let options: StartOptions = { 65 displayId: 0, 66 startWindowIcon: imagePixelMap, 67 startWindowBackgroundColor: '#00000000', 68 supportWindowModes: [ 69 bundleManager.SupportWindowMode.FULL_SCREEN, 70 bundleManager.SupportWindowMode.SPLIT, 71 bundleManager.SupportWindowMode.FLOATING 72 ], 73 minWindowWidth: 320, 74 minWindowHeight: 240, 75 maxWindowWidth: 2560, 76 maxWindowHeight: 2560 77 }; 78 79 try { 80 this.context.startAbility(want, options, (err: BusinessError) => { 81 if (err.code) { 82 // 处理业务逻辑错误 83 console.error(`startAbility failed, code is ${err.code}, message is ${err.message}`); 84 return; 85 } 86 // 执行正常业务 87 console.info('startAbility succeed'); 88 }); 89 } catch (err) { 90 // 处理入参错误异常 91 let code = (err as BusinessError).code; 92 let message = (err as BusinessError).message; 93 console.error(`startAbility failed, code is ${code}, message is ${message}`); 94 } 95 }).catch((err: BusinessError) => { 96 console.error(`createPixelMap failed, code is ${err.code}, message is ${err.message}`); 97 }); 98 } 99 } 100 ``` 101