1# AbilityRuntime 2 3 4## 概述 5 6提供元能力基础框架的相关能力。 7 8**系统能力**:SystemCapability.Ability.AbilityRuntime.Core 9 10**起始版本**:13 11 12 13## 汇总 14 15 16### 文件 17 18| 名称 | 描述 | 19| -------- | -------- | 20| [ability_runtime_common.h](ability__runtime__common_8h.md) | 声明元能力子系统的相关错误码。<br/>**引用文件**:<AbilityKit/ability_runtime/ability_runtime_common.h><br/>**库**:libability_runtime.so | 21| [application_context.h](application__context_8h.md) | 声明应用级别的上下文能力。<br/>**引用文件**:<AbilityKit/ability_runtime/application_context.h><br/>**库**:libability_runtime.so | 22| [context_constant.h](context__constant_8h.md) | 声明上下文相关的枚举。<br/>**引用文件**:<AbilityKit/ability_runtime/context_constant.h><br/>**库**:libability_runtime.so | 23| [start_options.h](start__options_8h.md) | 声明StartOptions结构体以及结构体相关函数。<br/>**引用文件**:<AbilityKit/ability_runtime/start_options.h><br/>**库**:libability_runtime.so | 24 25### 枚举 26 27| 名称 | 描述 | 28| ------------------------------------------------------------ | ---------------------- | 29| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) {<br> ABILITY_RUNTIME_ERROR_CODE_NO_ERROR = 0,<br> ABILITY_RUNTIME_ERROR_CODE_PERMISSION_DENIED = 201,<br> ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID = 401,<br> ABILITY_RUNTIME_ERROR_CODE_NOT_SUPPORTED = 801,<br> ABILITY_RUNTIME_ERROR_CODE_NO_SUCH_ABILITY = 16000001,<br> ABILITY_RUNTIME_ERROR_CODE_INCORRECT_ABILITY_TYPE = 16000002,<br> ABILITY_RUNTIME_ERROR_CODE_CROWDTEST_EXPIRED = 16000008,<br> ABILITY_RUNTIME_ERROR_CODE_WUKONG_MODE = 16000009,<br> ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST = 16000011,<br> ABILITY_RUNTIME_ERROR_CODE_CONTROLLED = 16000012,<br> ABILITY_RUNTIME_ERROR_CODE_EDM_CONTROLLED = 16000013,<br> ABILITY_RUNTIME_ERROR_CODE_CROSS_APP = 16000018,<br> ABILITY_RUNTIME_ERROR_CODE_INTERNAL = 16000050,<br> ABILITY_RUNTIME_ERROR_CODE_NOT_TOP_ABILITY = 16000053,<br> ABILITY_RUNTIME_ERROR_VISIBILITY_SETTING_DISABLED = 16000067,<br> ABILITY_RUNTIME_ERROR_CODE_MULTI_APP_NOT_SUPPORTED = 16000072,<br> ABILITY_RUNTIME_ERROR_CODE_INVALID_APP_INSTANCE_KEY = 16000076,<br> ABILITY_RUNTIME_ERROR_CODE_UPPER_LIMIT_REACHED = 16000077,<br> ABILITY_RUNTIME_ERROR_MULTI_INSTANCE_NOT_SUPPORTED = 16000078,<br> ABILITY_RUNTIME_ERROR_CODE_APP_INSTANCE_KEY_NOT_SUPPORTED = 16000079<br/>} | 定义元能力模块错误码。 | 30| [AbilityRuntime_AreaMode](#abilityruntime_areamode) {<br/> ABILITY_RUNTIME_AREA_MODE_EL1 = 0,<br/> ABILITY_RUNTIME_AREA_MODE_EL2 = 1,<br/> ABILITY_RUNTIME_AREA_MODE_EL3 = 2,<br/> ABILITY_RUNTIME_AREA_MODE_EL4 = 3,<br/> ABILITY_RUNTIME_AREA_MODE_EL5 = 4<br/>} | 定义数据加密等级。 | 31| [AbilityRuntime_StartVisibility](#abilityruntime_startvisibility) {<br/> ABILITY_RUNTIME_HIDE_UPON_START = 0,<br/> ABILITY_RUNTIME_SHOW_UPON_START = 1<br/>} | 定义启动Ability时的窗口和dock栏图标显示模式。 | 32| [AbilityRuntime_WindowMode](#abilityruntime_supportedwindowmode) {<br/> ABILITY_RUNTIME_WINDOW_MODE_UNDEFINED = 0,</br> ABILITY_RUNTIME_WINDOW_MODE_FULL_SCREEN = 1<br/>} | 定义启动应用时支持的窗口模式。 | 33| [AbilityRuntime_SupportedWindowMode](#abilityruntime_supportedwindowmode) {<br/> ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_FULL_SCREEN = 0,<br/> ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_SPLIT = 1,<br/> ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_FLOATING = 2<br/>} | 定义启动应用时支持的窗口模式。 | 34 35### 函数 36 37| 名称 | 描述 | 38| -------- | -------- | 39| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_ApplicationContextGetCacheDir](#oh_abilityruntime_applicationcontextgetcachedir)(char* buffer, int32_t bufferSize, int32_t* writeLength) | 获取应用级别的缓存目录。 | 40| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_ApplicationContextGetAreaMode](#oh_abilityruntime_applicationcontextgetareamode)([AbilityRuntime_AreaMode](#abilityruntime_areamode)* areaMode) | 获取应用级别的数据加密等级。 | 41| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_ApplicationContextGetBundleName](#oh_abilityruntime_applicationcontextgetbundlename)(char* buffer, int32_t bufferSize, int32_t* writeLength) | 获取应用包名。 | 42| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_ApplicationContextGetTempDir](#oh_abilityruntime_applicationcontextgettempdir)(char* buffer, const int32_t bufferSize, int32_t* writeLength) | 获取应用级别的临时文件目录。 | 43| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_ApplicationContextGetFilesDir](#oh_abilityruntime_applicationcontextgetfilesdir)(char* buffer, const int32_t bufferSize, int32_t* writeLength) | 获取应用级别的通用文件目录。 | 44| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_ApplicationContextGetDatabaseDir](#oh_abilityruntime_applicationcontextgetdatabasedir)(char* buffer, const int32_t bufferSize, int32_t* writeLength) | 获取应用级别的数据库文件目录。 | 45| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_ApplicationContextGetPreferencesDir](#oh_abilityruntime_applicationcontextgetpreferencesdir)(char* buffer, const int32_t bufferSize, int32_t* writeLength) | 获取应用级别的首选项文件目录。 | 46| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_ApplicationContextGetBundleCodeDir](#oh_abilityruntime_applicationcontextgetbundlecodedir)(char* buffer, const int32_t bufferSize, int32_t* writeLength) | 获取应用级别的安装文件目录。 | 47| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_ApplicationContextGetDistributedFilesDir](#oh_abilityruntime_applicationcontextgetdistributedfilesdir)(char* buffer, const int32_t bufferSize, int32_t* writeLength) | 获取应用级别的分布式文件目录。 | 48| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_ApplicationContextGetCloudFileDir](#oh_abilityruntime_applicationcontextgetcloudfiledir)(char* buffer, const int32_t bufferSize, int32_t* writeLength) | 获取应用级别的云文件目录。 | 49| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_StartSelfUIAbility](#oh_abilityruntime_startselfuiability)([AbilityBase_Want](_ability_base.md#abilitybase_want) *want) | 启动当前应用的UIAbility。 | 50| [AbilityRuntime_StartOptions*](#abilityruntime_startoptions) [OH_AbilityRuntime_CreateStartOptions](#oh_abilityruntime_createstartoptions)(void) | 创建启动当前应用的UIAbility所需要的StartOptions结构体。 | 51| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_DestroyStartOptions](#oh_abilityruntime_destroystartoptions)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) **startOptions) | 销毁StartOptions结构体。 | 52| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsWindowMode](#oh_abilityruntime_setstartoptionswindowmode)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, [AbilityRuntime_WindowMode](#abilityruntime_windowmode) windowMode) | 设置启动Ability时的窗口模式。 | 53| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsWindowMode](#oh_abilityruntime_getstartoptionswindowmode)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, [AbilityRuntime_WindowMode](#abilityruntime_windowmode) &windowMode) | 获取启动Ability时的窗口模式。 | 54| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsDisplayId](#oh_abilityruntime_setstartoptionsdisplayid)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t displayId) | 设置启动Ability时窗口所在的屏幕ID。 | 55| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsDisplayId](#oh_abilityruntime_getstartoptionsdisplayid)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t &displayId) | 获取启动Ability时窗口所在的屏幕ID。 | 56| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsWithAnimation](#oh_abilityruntime_setstartoptionswithanimation)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, bool withAnimation) | 设置启动Ability时是否具有动画效果。 | 57| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsWithAnimation](#oh_abilityruntime_getstartoptionswithanimation)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, bool &withAnimation) | 获取启动Ability时是否具有动画效果。 | 58| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsWindowLeft](#oh_abilityruntime_setstartoptionswindowleft)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t windowLeft) | 设置启动Ability时的窗口左侧位置,单位为px。 | 59| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsWindowLeft](#oh_abilityruntime_getstartoptionswindowleft)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t &windowLeft) | 获取启动Ability时的窗口左侧位置,单位为px。 | 60| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsWindowTop](#oh_abilityruntime_setstartoptionswindowtop)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t windowTop) | 设置启动Ability时的窗口顶部位置,单位为px。 | 61| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsWindowTop](#oh_abilityruntime_getstartoptionswindowtop)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t &windowTop) | 获取启动Ability时的窗口顶部位置,单位为px。 | 62| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsWindowHeight](#oh_abilityruntime_setstartoptionswindowheight)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t windowHeight) | 设置启动Ability时的窗口高度,单位为px。 | 63| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsWindowHeight](#oh_abilityruntime_getstartoptionswindowheight)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t &windowHeight) | 获取启动Ability时的窗口高度,单位为px。 | 64| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsWindowWidth](#oh_abilityruntime_setstartoptionswindowwidth)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t windowWidth) | 设置启动Ability时的窗口宽度,单位为px。 | 65| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsWindowWidth](#oh_abilityruntime_getstartoptionswindowwidth)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t &windowWidth) | 获取启动Ability时的窗口宽度,单位为px。 | 66| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsStartVisibility](#oh_abilityruntime_setstartoptionsstartvisibility)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, [AbilityRuntime_StartVisibility](#abilityruntime_startvisibility) startVisibility) | 设置启动Ability时窗口和dock栏图标的显示模式。 | 67| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsStartVisibility](#oh_abilityruntime_getstartoptionsstartvisibility)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, [AbilityRuntime_StartVisibility](#abilityruntime_startvisibility) &startVisibility) | 获取启动Ability时窗口和dock栏图标的显示模式。| 68| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsStartWindowIcon](#oh_abilityruntime_setstartoptionsstartwindowicon)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, [OH_PixelmapNative](../apis-image-kit/_image___native_module.md#oh_pixelmapnative) *startWindowIcon) | 设置启动Ability时的窗口启动图标。 | 69| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsStartWindowIcon](#oh_abilityruntime_getstartoptionsstartwindowicon)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, [OH_PixelmapNative](../apis-image-kit/_image___native_module.md#oh_pixelmapnative) **startWindowIcon) | 获取启动Ability时的窗口启动图标。 | 70| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsStartWindowBackgroundColor](#oh_abilityruntime_setstartoptionsstartwindowbackgroundcolor)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, const char *startWindowBackgroundColor) | 设置启动Ability时的窗口背景颜色。 | 71| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsStartWindowBackgroundColor](#oh_abilityruntime_getstartoptionsstartwindowbackgroundcolor)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, char **startWindowBackgroundColor, size_t &size) | 获取启动Ability时的窗口背景颜色。 | 72| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsSupportedWindowModes](#oh_abilityruntime_setstartoptionssupportedwindowmodes)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, [AbilityRuntime_SupportedWindowMode](#abilityruntime_supportedwindowmode) *supportedWindowModes, size_t size) | 设置启动Ability时组件所支持的窗口模式。 | 73| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsSupportedWindowModes](#oh_abilityruntime_getstartoptionssupportedwindowmodes)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, [AbilityRuntime_SupportedWindowMode](#abilityruntime_supportedwindowmode) **supportedWindowModes, size_t &size) | 获取启动Ability时组件所支持的窗口模式。 | 74| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsMinWindowWidth](#oh_abilityruntime_setstartoptionsminwindowwidth)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t minWindowWidth) | 设置启动Ability时的最小窗口宽度,单位为vp。 | 75| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsMinWindowWidth](#oh_abilityruntime_getstartoptionsminwindowwidth)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t &minWindowWidth) | 获取启动Ability时的最小窗口宽度,单位为vp。 | 76| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsMaxWindowWidth](#oh_abilityruntime_setstartoptionsmaxwindowwidth)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t maxWindowWidth) | 设置启动Ability时的最大窗口宽度,单位为vp。 | 77| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsMaxWindowWidth](#oh_abilityruntime_getstartoptionsmaxwindowwidth)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t &maxWindowWidth) | 获取启动Ability时的最大窗口宽度,单位为vp。 | 78| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsMinWindowHeight](#oh_abilityruntime_setstartoptionsminwindowheight)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t minWindowHeight) | 设置启动Ability时的最小窗口高度,单位为vp。 | 79| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsMinWindowHeight](#oh_abilityruntime_getstartoptionsminwindowheight)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t &minWindowHeight) | 获取启动Ability时的最小窗口高度,单位为vp。 | 80| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_SetStartOptionsMaxWindowHeight](#oh_abilityruntime_setstartoptionsmaxwindowheight)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t maxWindowHeig) | 设置启动Ability时的最大窗口高度,单位为vp。 | 81| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_GetStartOptionsMaxWindowHeight](#oh_abilityruntime_getstartoptionsmaxwindowheight)([AbilityRuntime_StartOptions](#abilityruntime_startoptions) *startOptions, int32_t &maxWindowHeight) | 获取启动Ability时的最大窗口高度,单位为vp。 | 82| [AbilityRuntime_ErrorCode](#abilityruntime_errorcode) [OH_AbilityRuntime_StartSelfUIAbilityWithStartOptions](#oh_abilityruntime_startselfuiabilitywithstartoptions)([AbilityBase_Want](_ability_base.md#abilitybase_want) *want, [AbilityRuntime_StartOptions](#abilityruntime_startoptions) *options) | 启动当前应用的UIAbility。 | 83 84## 结构体 85 86### AbilityRuntime_StartOptions 87 88``` 89AbilityRuntime_StartOptions 90``` 91 92**描述** 93 94StartOptions数据结构。 95 96**起始版本:** 17 97 98## 枚举类型说明 99 100### AbilityRuntime_ErrorCode 101 102``` 103enum AbilityRuntime_ErrorCode 104``` 105 106**描述** 107 108定义元能力模块错误码。 109 110**起始版本**:13 111 112| 枚举值 | 描述 | 113| --------------------------------------------- | -------------- | 114| ABILITY_RUNTIME_ERROR_CODE_NO_ERROR | 操作成功。 | 115| ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID | 无效参数。 | 116| ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST | 上下文不存在。 | 117| ABILITY_RUNTIME_ERROR_CODE_PERMISSION_DENIED | 权限校验失败。<br/>**起始版本:** 15 | 118| ABILITY_RUNTIME_ERROR_CODE_NOT_SUPPORTED | 设备类型不支持。<br/>**起始版本:** 15 | 119| ABILITY_RUNTIME_ERROR_CODE_NO_SUCH_ABILITY | 指定的Ability名称不存在。<br/>**起始版本:** 15 | 120| ABILITY_RUNTIME_ERROR_CODE_INCORRECT_ABILITY_TYPE | 接口调用Ability类型错误。<br/>**起始版本:** 15 | 121| ABILITY_RUNTIME_ERROR_CODE_CROWDTEST_EXPIRED | 众测应用到期。<br/>**起始版本:** 15 | 122| ABILITY_RUNTIME_ERROR_CODE_WUKONG_MODE | wukong模式,不允许启动/停止ability。<br/>**起始版本:** 15 | 123| ABILITY_RUNTIME_ERROR_CODE_CONTROLLED | 应用被管控。<br/>**起始版本:** 15 | 124| ABILITY_RUNTIME_ERROR_CODE_EDM_CONTROLLED | 应用被EDM管控。<br/>**起始版本:** 15 | 125| ABILITY_RUNTIME_ERROR_CODE_CROSS_APP | 限制API 11以上版本三方应用跳转。<br/>**起始版本:** 15 | 126| ABILITY_RUNTIME_ERROR_CODE_INTERNAL | 内部错误。<br/>**起始版本:** 15 | 127| ABILITY_RUNTIME_ERROR_CODE_NOT_TOP_ABILITY | 非顶层应用。<br/>**起始版本:** 15 | 128| ABILITY_RUNTIME_ERROR_VISIBILITY_SETTING_DISABLED | 不支持设置应用启动时窗口可见性。<br/>**起始版本:** 17 | 129| ABILITY_RUNTIME_ERROR_CODE_MULTI_APP_NOT_SUPPORTED | 应用既不支持分身也不支持多实例。<br/>**起始版本:** 17 | 130| ABILITY_RUNTIME_ERROR_CODE_INVALID_APP_INSTANCE_KEY | 传入的instanceKey无效。<br/>**起始版本:** 17 | 131| ABILITY_RUNTIME_ERROR_CODE_UPPER_LIMIT_REACHED | 多实例数量已达到上限。<br/>**起始版本:** 17 | 132| ABILITY_RUNTIME_ERROR_MULTI_INSTANCE_NOT_SUPPORTED | 应用不支持多实例。<br/>**起始版本:** 17 | 133| ABILITY_RUNTIME_ERROR_CODE_APP_INSTANCE_KEY_NOT_SUPPORTED | 不支持设置instanceKey。<br/>**起始版本:** 17 | 134 135### AbilityRuntime_AreaMode 136 137``` 138enum AbilityRuntime_AreaMode 139``` 140 141**描述** 142 143定义数据加密等级。 144 145**起始版本**:13 146 147| 枚举值 | 描述 | 148| ----------------------------- | ------------------------------------------------------------ | 149| ABILITY_RUNTIME_AREA_MODE_EL1 | 对于私有文件,如闹铃、壁纸等,应用可以将这些文件放到设备级加密分区(EL1)中,以保证在用户输入密码前就可以被访问。 | 150| ABILITY_RUNTIME_AREA_MODE_EL2 | 对于更敏感的文件,如个人隐私信息等,应用可以将这些文件放到更高级别的加密分区(EL2)中,以保证更高的安全性。 | 151| ABILITY_RUNTIME_AREA_MODE_EL3 | 对于应用中的记录步数、文件下载、音乐播放,需要在锁屏时读写和创建新文件,放在(EL3)的加密分区比较合适。 | 152| ABILITY_RUNTIME_AREA_MODE_EL4 | 对于用户安全信息相关的文件,锁屏时不需要读写文件、也不能创建文件,放在(EL4)的加密分区更合适。 | 153| ABILITY_RUNTIME_AREA_MODE_EL5 | 对于用户隐私敏感数据文件,锁屏后默认不可读写,如果锁屏后需要读写文件,则锁屏前可以调用[Access](js-apis-screenLockFileManager.md#screenlockfilemanageracquireaccess)接口申请继续读写文件,或者锁屏后也需要创建新文件且可读写,放在(EL5)的应用级加密分区更合适。 | 154 155### AbilityRuntime_StartVisibility 156 157``` 158enum AbilityRuntime_StartVisibility 159``` 160 161**描述** 162 163启动Ability时的窗口和dock栏图标的显示模式。 164 165**起始版本:** 17 166 167| 枚举值 | 描述 | 168| ----------------------------- | ------------------------------------------------------------ | 169| ABILITY_RUNTIME_HIDE_UPON_START | 隐藏窗口及dock栏图标。仅在2in1设备上生效。 | 170| ABILITY_RUNTIME_SHOW_UPON_START | 显示窗口及dock栏图标。仅在2in1设备上生效。 | 171 172### AbilityRuntime_WindowMode 173 174``` 175enum AbilityRuntime_WindowMode 176``` 177 178**描述** 179 180启动Ability时的窗口模式。 181 182**起始版本:** 17 183 184| 枚举值 | 描述 | 185| ----------------------------- | ------------------------------------------------------------ | 186| ABILITY_RUNTIME_WINDOW_MODE_UNDEFINED | 未定义窗口模式。 | 187| ABILITY_RUNTIME_WINDOW_MODE_FULL_SCREEN | 全屏模式。仅在2in1设备上生效。 | 188 189### AbilityRuntime_SupportedWindowMode 190 191``` 192enum AbilityRuntime_SupportedWindowMode 193``` 194 195**描述** 196 197在应用内启动UIAbility时,指定窗口是否显示最大化/窗口化/分屏按键。如果未配置该字段,则默认采用该UIAbility对应的[module.json5配置文件](../../quick-start/module-configuration-file.md)中[abilities标签](../../quick-start/module-configuration-file.md#abilities标签)的supportWindowMode字段取值。 198 199**起始版本:** 17 200 201| 枚举值 | 描述 | 202| ----------------------------- | ------------------------------------------------------------ | 203| ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_FULL_SCREEN | 窗口支持全屏显示。 | 204| ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_SPLIT | 窗口支持分屏显示。通常需要配合ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_FULL_SCREEN或ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_FLOATING一起使用,不建议只配置ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_SPLIT。当仅配置ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_SPLIT时,2in1设备上的窗口默认为悬浮窗模式,支持进入分屏模式。 | 205| ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_FLOATING | 支持窗口化显示。 | 206 207## 函数说明 208 209 210### OH_AbilityRuntime_ApplicationContextGetCacheDir 211 212``` 213AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetCacheDir(char* buffer, int32_t bufferSize, int32_t* writeLength) 214``` 215**描述** 216 217获取应用级别的缓存目录。 218 219**起始版本**:13 220 221**参数:** 222 223| 名称 | 描述 | 224| -------- | -------- | 225| buffer | 缓冲区,缓存目录字符串写入该区域。 | 226| bufferSize | 缓冲区大小。 | 227| writeLength | 在返回ABILITY_RUNTIME_ERROR_CODE_NO_ERROR时,表示实际写入到缓冲区的字符串长度。 | 228 229**返回:** 230 231ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 查询成功。 232 233ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - 入参buffer或者writeLength为空,或者缓冲区大小小于需要写入的大小。 234 235ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST - 当前环境的上下文不存在,如在应用创建的[子进程](c-apis-ability-childprocess.md)中应用级别上下文不存在。 236 237### OH_AbilityRuntime_ApplicationContextGetAreaMode 238 239``` 240AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetAreaMode(AbilityRuntime_AreaMode* areaMode) 241``` 242 243**描述** 244 245获取应用级别的数据加密等级。 246 247**起始版本**:13 248 249**参数:** 250 251| 名称 | 描述 | 252| -------- | ------------------------ | 253| areaMode | 用于接受加密等级的指针。 | 254 255**返回:** 256 257ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 查询成功。 258 259ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - 入参areaMode为空。 260 261ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST - 当前环境的上下文不存在,如在应用创建的[子进程](c-apis-ability-childprocess.md)中应用级别上下文不存在。 262 263### OH_AbilityRuntime_ApplicationContextGetBundleName 264 265``` 266AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetBundleName(char* buffer, int32_t bufferSize, int32_t* writeLength) 267``` 268 269**描述** 270 271获取应用包名。 272 273**起始版本**:13 274 275**参数:** 276 277| 名称 | 描述 | 278| ----------- | ------------------------------------------------------------ | 279| buffer | 缓冲区,应用包名字符串写入该区域。 | 280| bufferSize | 缓冲区大小。 | 281| writeLength | 在返回ABILITY_RUNTIME_ERROR_CODE_NO_ERROR时,表示实际写入到缓冲区的字符串长度。 | 282 283**返回:** 284 285ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 查询成功。 286 287ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - 入参buffer或者writeLength为空,或者缓冲区大小小于需要写入的大小。 288 289ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST - 当前环境的上下文不存在,如在应用创建的[子进程](c-apis-ability-childprocess.md)中应用级别上下文不存在。 290 291### OH_AbilityRuntime_ApplicationContextGetTempDir 292 293``` 294AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetTempDir(char* buffer, const int32_t bufferSize, int32_t* writeLength) 295``` 296 297**描述** 298 299获取应用级别的临时文件目录。 300 301**起始版本:** 16 302 303**参数:** 304 305| 名称 | 描述 | 306| ----------- | ------------------------------------------------------------ | 307| buffer | 缓冲区,缓存目录字符串写入该区域。 | 308| bufferSize | 缓冲区大小。 | 309| writeLength | 在返回ABILITY_RUNTIME_ERROR_CODE_NO_ERROR时,表示实际写入到缓冲区的字符串长度。 | 310 311**返回:** 312 313ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 查询成功。 314 315ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - 入参buffer或者writeLength为空,或者缓冲区大小小于需要写入的大小。 316 317ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST - 当前环境的上下文不存在,如在应用创建的[子进程](c-apis-ability-childprocess.md)中应用级别上下文不存在。 318 319### OH_AbilityRuntime_ApplicationContextGetFilesDir 320 321``` 322AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetFilesDir(char* buffer, const int32_t bufferSize, int32_t* writeLength) 323``` 324 325**描述** 326 327获取应用级别的通用文件目录。 328 329**起始版本:** 16 330 331**参数:** 332 333| 名称 | 描述 | 334| ----------- | ------------------------------------------------------------ | 335| buffer | 缓冲区,缓存目录字符串写入该区域。 | 336| bufferSize | 缓冲区大小。 | 337| writeLength | 在返回ABILITY_RUNTIME_ERROR_CODE_NO_ERROR时,表示实际写入到缓冲区的字符串长度。 | 338 339**返回:** 340 341ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 查询成功。 342 343ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - 入参buffer或者writeLength为空,或者缓冲区大小小于需要写入的大小。 344 345ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST - 当前环境的上下文不存在,如在应用创建的[子进程](c-apis-ability-childprocess.md)中应用级别上下文不存在。 346 347### OH_AbilityRuntime_ApplicationContextGetDatabaseDir 348 349``` 350AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetDatabaseDir(char* buffer, const int32_t bufferSize, int32_t* writeLength) 351``` 352 353**描述** 354 355获取应用级别的数据库文件目录。 356 357**起始版本:** 16 358 359**参数:** 360 361| 名称 | 描述 | 362| ----------- | ------------------------------------------------------------ | 363| buffer | 缓冲区,缓存目录字符串写入该区域。 | 364| bufferSize | 缓冲区大小。 | 365| writeLength | 在返回ABILITY_RUNTIME_ERROR_CODE_NO_ERROR时,表示实际写入到缓冲区的字符串长度。 | 366 367**返回:** 368 369ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 查询成功。 370 371ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - 入参buffer或者writeLength为空,或者缓冲区大小小于需要写入的大小。 372 373ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST - 当前环境的上下文不存在,如在应用创建的[子进程](c-apis-ability-childprocess.md)中应用级别上下文不存在。 374 375### OH_AbilityRuntime_ApplicationContextGetPreferencesDir 376 377``` 378AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetPreferencesDir(char* buffer, const int32_t bufferSize, int32_t* writeLength) 379``` 380 381**描述** 382 383获取应用级别的首选项文件目录。 384 385**起始版本:** 16 386 387**参数:** 388 389| 名称 | 描述 | 390| ----------- | ------------------------------------------------------------ | 391| buffer | 缓冲区,缓存目录字符串写入该区域。 | 392| bufferSize | 缓冲区大小。 | 393| writeLength | 在返回ABILITY_RUNTIME_ERROR_CODE_NO_ERROR时,表示实际写入到缓冲区的字符串长度。 | 394 395**返回:** 396 397ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 查询成功。 398 399ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - 入参buffer或者writeLength为空,或者缓冲区大小小于需要写入的大小。 400 401ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST - 当前环境的上下文不存在,如在应用创建的[子进程](c-apis-ability-childprocess.md)中应用级别上下文不存在。 402 403### OH_AbilityRuntime_ApplicationContextGetBundleCodeDir 404 405``` 406AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetBundleCodeDir(char* buffer, const int32_t bufferSize, int32_t* writeLength) 407``` 408 409**描述** 410 411获取应用级别的安装文件目录。 412 413**起始版本:** 16 414 415**参数:** 416 417| 名称 | 描述 | 418| ----------- | ------------------------------------------------------------ | 419| buffer | 缓冲区,缓存目录字符串写入该区域。 | 420| bufferSize | 缓冲区大小。 | 421| writeLength | 在返回ABILITY_RUNTIME_ERROR_CODE_NO_ERROR时,表示实际写入到缓冲区的字符串长度。 | 422 423**返回:** 424 425ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 查询成功。 426 427ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - 入参buffer或者writeLength为空,或者缓冲区大小小于需要写入的大小。 428 429ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST - 当前环境的上下文不存在,如在应用创建的[子进程](c-apis-ability-childprocess.md)中应用级别上下文不存在。 430 431### OH_AbilityRuntime_ApplicationContextGetDistributedFilesDir 432 433``` 434AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetDistributedFilesDir(char* buffer, const int32_t bufferSize, int32_t* writeLength) 435``` 436 437**描述** 438 439获取应用级别的分布式文件目录。 440 441**起始版本:** 16 442 443**参数:** 444 445| 名称 | 描述 | 446| ----------- | ------------------------------------------------------------ | 447| buffer | 缓冲区,缓存目录字符串写入该区域。 | 448| bufferSize | 缓冲区大小。 | 449| writeLength | 在返回ABILITY_RUNTIME_ERROR_CODE_NO_ERROR时,表示实际写入到缓冲区的字符串长度。 | 450 451**返回:** 452 453ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 查询成功。 454 455ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - 入参buffer或者writeLength为空,或者缓冲区大小小于需要写入的大小。 456 457ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST - 当前环境的上下文不存在,如在应用创建的[子进程](c-apis-ability-childprocess.md)中应用级别上下文不存在。 458 459### OH_AbilityRuntime_ApplicationContextGetCloudFileDir 460 461``` 462AbilityRuntime_ErrorCode OH_AbilityRuntime_ApplicationContextGetCloudFileDir(char* buffer, const int32_t bufferSize, int32_t* writeLength) 463``` 464 465**描述** 466 467获取应用级别的云文件目录。 468 469**起始版本:** 16 470 471**参数:** 472 473| 名称 | 描述 | 474| ----------- | ------------------------------------------------------------ | 475| buffer | 缓冲区,缓存目录字符串写入该区域。 | 476| bufferSize | 缓冲区大小。 | 477| writeLength | 在返回ABILITY_RUNTIME_ERROR_CODE_NO_ERROR时,表示实际写入到缓冲区的字符串长度。 | 478 479**返回:** 480 481ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 查询成功。 482 483ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - 入参buffer或者writeLength为空,或者缓冲区大小小于需要写入的大小。 484 485ABILITY_RUNTIME_ERROR_CODE_CONTEXT_NOT_EXIST - 当前环境的上下文不存在,如在应用创建的[子进程](c-apis-ability-childprocess.md)中应用级别上下文不存在。 486 487### OH_AbilityRuntime_StartSelfUIAbility 488 489``` 490AbilityRuntime_ErrorCode OH_AbilityRuntime_StartSelfUIAbility(AbilityBase_Want *want) 491``` 492 493**描述** 494 495启动当前应用的UIAbility。 496 497> **说明:** 498> 499> 当前仅支持2in1设备。 500 501**需要权限**:ohos.permission.NDK_START_SELF_UI_ABILITY 502 503**起始版本:** 15 504 505**参数:** 506 507| 名称 | 描述 | 508| ----------- | ------------------------------------------------------------ | 509| want | 启动当前应用UIAbility时需要的Want信息。 | 510 511**返回:** 512 513ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 接口调用成功。 514 515ABILITY_RUNTIME_ERROR_CODE_PERMISSION_DENIED - 权限校验失败。 516 517ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - Want信息为空,或者Want信息里bundleName或abilityName为空。 518 519ABILITY_RUNTIME_ERROR_CODE_NOT_SUPPORTED - 设备类型不支持。 520 521ABILITY_RUNTIME_ERROR_CODE_NO_SUCH_ABILITY - 指定的Ability名称不存在。 522 523ABILITY_RUNTIME_ERROR_CODE_INCORRECT_ABILITY_TYPE - 接口调用Ability类型错误。 524 525ABILITY_RUNTIME_ERROR_CODE_CROWDTEST_EXPIRED - 众测应用到期。 526 527ABILITY_RUNTIME_ERROR_CODE_WUKONG_MODE - wukong模式,不允许启动/停止Ability。 528 529ABILITY_RUNTIME_ERROR_CODE_CONTROLLED - 应用被管控。 530 531ABILITY_RUNTIME_ERROR_CODE_EDM_CONTROLLED - 应用被EDM管控。 532 533ABILITY_RUNTIME_ERROR_CODE_CROSS_APP - 限制API 11以上版本三方应用跳转。 534 535ABILITY_RUNTIME_ERROR_CODE_INTERNAL - 内部错误。 536 537ABILITY_RUNTIME_ERROR_CODE_NOT_TOP_ABILITY - 非顶层应用。 538 539ABILITY_RUNTIME_ERROR_CODE_UPPER_LIMIT_REACHED - 表示应用多实例已达到上限。 540 541ABILITY_RUNTIME_ERROR_CODE_APP_INSTANCE_KEY_NOT_SUPPORTED - 表示不允许设置APP_INSTANCE_KEY。 542 543**示例代码:** 544```cpp 545#include <AbilityKit/ability_base/want.h> 546#include <AbilityKit/ability_runtime/application_context.h> 547 548void startSelfUIAbilityTest() 549{ 550 AbilityBase_Element element; 551 element.abilityName = const_cast<char*>("EntryAbility"); 552 element.bundleName = const_cast<char*>("com.exampl.myapplication"); 553 element.moduleName = const_cast<char*>("entry"); 554 AbilityBase_Want* want = OH_AbilityBase_CreateWant(element); 555 556 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_StartSelfUIAbility(want); 557 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 558 // 记录错误日志以及其他业务处理 559 return; 560 } 561 // 销毁want,防止内存泄漏 562 OH_AbilityBase_DestroyWant(want); 563} 564``` 565 566### OH_AbilityRuntime_CreateStartOptions 567 568``` 569AbilityRuntime_StartOptions* OH_AbilityRuntime_CreateStartOptions(void) 570``` 571 572**描述** 573 574创建启动当前应用的UIAbility所需要的StartOptions结构体。 575 576**起始版本:** 17 577 578**返回:** 579 580AbilityRuntime_StartOptions - StartOptions数据结构。 581 582**示例代码:** 583```cpp 584#include <AbilityKit/ability_runtime/start_options.h> 585 586void createStartOptionsTest() 587{ 588 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 589 if (options == nullptr) { 590 // 记录错误日志以及其他业务处理 591 return; 592 } 593 594 // 销毁options,防止内存泄漏 595 OH_AbilityRuntime_DestroyStartOptions(&options); 596} 597``` 598 599### OH_AbilityRuntime_DestroyStartOptions 600 601``` 602AbilityRuntime_ErrorCode OH_AbilityRuntime_DestroyStartOptions(AbilityRuntime_StartOptions **startOptions) 603``` 604 605**描述** 606 607销毁StartOptions结构体。 608 609**参数:** 610 611| 名称 | 描述 | 612| ----------- | ------------------------------------------------------------ | 613| startOptions | 需要销毁的StartOptions结构体。 | 614 615**起始版本:** 17 616 617**返回:** 618 619ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 销毁成功。 620 621ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 622 623**示例代码:** 624```cpp 625#include <AbilityKit/ability_runtime/start_options.h> 626 627void destroyStartOptionsTest() 628{ 629 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 630 if (options == nullptr) { 631 // 记录错误日志以及其他业务处理 632 return; 633 } 634 635 // 销毁options,防止内存泄漏 636 OH_AbilityRuntime_DestroyStartOptions(&options); 637} 638``` 639 640### OH_AbilityRuntime_SetStartOptionsWindowMode 641 642``` 643AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsWindowMode(AbilityRuntime_StartOptions *startOptions, 644 AbilityRuntime_WindowMode windowMode); 645``` 646 647**描述** 648 649设置启动Ability时的窗口模式。 650 651**参数:** 652 653| 名称 | 描述 | 654| ----------- | ------------------------------------------------------------ | 655| startOptions | StartOptions结构体。 | 656| windowMode | 需要设置的窗口模式。 | 657 658**起始版本:** 17 659 660**返回:** 661 662ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 663 664ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空或者WindowMode无效。 665 666**示例代码:** 667```cpp 668#include <AbilityKit/ability_runtime/start_options.h> 669 670void demo() 671{ 672 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 673 if (options == nullptr) { 674 // 记录错误日志以及其他业务处理 675 return; 676 } 677 678 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsWindowMode(options, 679 ABILITY_RUNTIME_WINDOW_MODE_FULL_SCREEN); 680 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 681 // 记录错误日志以及其他业务处理 682 } 683 // 销毁options,防止内存泄漏 684 OH_AbilityRuntime_DestroyStartOptions(&options); 685} 686``` 687 688### OH_AbilityRuntime_GetStartOptionsWindowMode 689 690``` 691AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsWindowMode(AbilityRuntime_StartOptions *startOptions, 692 AbilityRuntime_WindowMode &windowMode); 693``` 694 695**描述** 696 697获取启动Ability时的窗口模式。 698 699**参数:** 700 701| 名称 | 描述 | 702| ----------- | ------------------------------------------------------------ | 703| startOptions | StartOptions结构体。 | 704| windowMode | 获取到的窗口模式。 | 705 706**起始版本:** 17 707 708**返回:** 709 710ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 711 712ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 713 714**示例代码:** 715```cpp 716#include <AbilityKit/ability_runtime/start_options.h> 717 718void demo() 719{ 720 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 721 if (options == nullptr) { 722 // 记录错误日志以及其他业务处理 723 return; 724 } 725 726 AbilityRuntime_WindowMode windowMode = ABILITY_RUNTIME_WINDOW_MODE_UNDEFINED; 727 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsWindowMode(options, windowMode); 728 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 729 // 记录错误日志以及其他业务处理 730 } 731 // 销毁options,防止内存泄漏 732 OH_AbilityRuntime_DestroyStartOptions(&options); 733} 734``` 735 736### OH_AbilityRuntime_SetStartOptionsDisplayId 737 738``` 739AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsDisplayId(AbilityRuntime_StartOptions *startOptions, int32_t displayId); 740``` 741 742**描述** 743 744设置启动Ability时窗口所在的屏幕ID。 745 746**参数:** 747 748| 名称 | 描述 | 749| ----------- | ------------------------------------------------------------ | 750| startOptions | StartOptions结构体。 | 751| displayId | 启动Ability时窗口所在的屏幕ID。 | 752 753**起始版本:** 17 754 755**返回:** 756 757ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 758 759ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 760 761**示例代码:** 762```cpp 763#include <AbilityKit/ability_runtime/start_options.h> 764 765void demo() 766{ 767 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 768 if (options == nullptr) { 769 // 记录错误日志以及其他业务处理 770 return; 771 } 772 773 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsDisplayId(options, 1); 774 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 775 // 记录错误日志以及其他业务处理 776 } 777 // 销毁options,防止内存泄漏 778 OH_AbilityRuntime_DestroyStartOptions(&options); 779} 780``` 781 782### OH_AbilityRuntime_GetStartOptionsDisplayId 783 784``` 785AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsDisplayId(AbilityRuntime_StartOptions *startOptions, int32_t &displayId); 786``` 787 788**描述** 789 790获取启动Ability时窗口所在的屏幕ID。 791 792**参数:** 793 794| 名称 | 描述 | 795| ----------- | ------------------------------------------------------------ | 796| startOptions | StartOptions结构体。 | 797| displayId | 获取到的屏幕ID。 | 798 799**起始版本:** 17 800 801**返回:** 802 803ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 804 805ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 806 807**示例代码:** 808```cpp 809#include <AbilityKit/ability_runtime/start_options.h> 810 811void demo() 812{ 813 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 814 if (options == nullptr) { 815 // 记录错误日志以及其他业务处理 816 return; 817 } 818 819 int32_t displayId = 0; 820 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsDisplayId(options, displayId); 821 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 822 // 记录错误日志以及其他业务处理 823 } 824 // 销毁options,防止内存泄漏 825 OH_AbilityRuntime_DestroyStartOptions(&options); 826} 827``` 828 829### OH_AbilityRuntime_SetStartOptionsWithAnimation 830 831``` 832AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsWithAnimation(AbilityRuntime_StartOptions *startOptions, bool withAnimation); 833``` 834 835**描述** 836 837设置启动Ability时是否具有动画效果。 838 839**参数:** 840 841| 名称 | 描述 | 842| ----------- | ------------------------------------------------------------ | 843| startOptions | StartOptions结构体。 | 844| withAnimation | 启动Ability时是否具有动画效果。 | 845 846**起始版本:** 17 847 848**返回:** 849 850ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 851 852ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 853 854**示例代码:** 855```cpp 856#include <AbilityKit/ability_runtime/start_options.h> 857 858void demo() 859{ 860 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 861 if (options == nullptr) { 862 // 记录错误日志以及其他业务处理 863 return; 864 } 865 866 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsWithAnimation(options, true); 867 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 868 // 记录错误日志以及其他业务处理 869 } 870 // 销毁options,防止内存泄漏 871 OH_AbilityRuntime_DestroyStartOptions(&options); 872} 873``` 874 875### OH_AbilityRuntime_GetStartOptionsWithAnimation 876 877``` 878AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsWithAnimation(AbilityRuntime_StartOptions *startOptions, bool &withAnimation); 879``` 880 881**描述** 882 883获取启动Ability时是否具有动画效果。 884 885**参数:** 886 887| 名称 | 描述 | 888| ----------- | ------------------------------------------------------------ | 889| startOptions | StartOptions结构体。 | 890| withAnimation | 启动Ability时是否具有动画效果。 | 891 892**起始版本:** 17 893 894**返回:** 895 896ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 897 898ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 899 900**示例代码:** 901```cpp 902#include <AbilityKit/ability_runtime/start_options.h> 903 904void demo() 905{ 906 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 907 if (options == nullptr) { 908 // 记录错误日志以及其他业务处理 909 return; 910 } 911 912 bool withAnimation = false; 913 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsWithAnimation(options, withAnimation); 914 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 915 // 记录错误日志以及其他业务处理 916 } 917 // 销毁options,防止内存泄漏 918 OH_AbilityRuntime_DestroyStartOptions(&options); 919} 920``` 921 922### OH_AbilityRuntime_SetStartOptionsWindowLeft 923 924``` 925AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsWindowLeft(AbilityRuntime_StartOptions *startOptions, int32_t windowLeft); 926``` 927 928**描述** 929 930设置启动Ability时的窗口左侧位置,单位为px。 931 932**参数:** 933 934| 名称 | 描述 | 935| ----------- | ------------------------------------------------------------ | 936| startOptions | StartOptions结构体。 | 937| windowLeft | 需要设置的窗口左侧位置,单位为px。 | 938 939**起始版本:** 17 940 941**返回:** 942 943ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 944 945ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 946 947**示例代码:** 948```cpp 949#include <AbilityKit/ability_runtime/start_options.h> 950 951void demo() 952{ 953 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 954 if (options == nullptr) { 955 // 记录错误日志以及其他业务处理 956 return; 957 } 958 959 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsWindowLeft(options, 200); 960 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 961 // 记录错误日志以及其他业务处理 962 } 963 // 销毁options,防止内存泄漏 964 OH_AbilityRuntime_DestroyStartOptions(&options); 965} 966``` 967 968### OH_AbilityRuntime_GetStartOptionsWindowLeft 969 970``` 971AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsWindowLeft(AbilityRuntime_StartOptions *startOptions, int32_t &windowLeft); 972``` 973 974**描述** 975 976获取启动Ability时的窗口左侧位置,单位为px。 977 978**参数:** 979 980| 名称 | 描述 | 981| ----------- | ------------------------------------------------------------ | 982| startOptions | StartOptions结构体。 | 983| windowLeft | 获取到的窗口左侧位置,单位为px。 | 984 985**起始版本:** 17 986 987**返回:** 988 989ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 990 991ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 992 993**示例代码:** 994```cpp 995#include <AbilityKit/ability_runtime/start_options.h> 996 997void demo() 998{ 999 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1000 if (options == nullptr) { 1001 // 记录错误日志以及其他业务处理 1002 return; 1003 } 1004 1005 int32_t windowLeft = 0; 1006 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsWindowLeft(options, windowLeft); 1007 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1008 // 记录错误日志以及其他业务处理 1009 } 1010 // 销毁options,防止内存泄漏 1011 OH_AbilityRuntime_DestroyStartOptions(&options); 1012} 1013``` 1014 1015### OH_AbilityRuntime_SetStartOptionsWindowTop 1016 1017``` 1018AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsWindowTop(AbilityRuntime_StartOptions *startOptions, int32_t windowTop); 1019``` 1020 1021**描述** 1022 1023设置启动Ability时的窗口顶部位置,单位为px。 1024 1025**参数:** 1026 1027| 名称 | 描述 | 1028| ----------- | ------------------------------------------------------------ | 1029| startOptions | StartOptions结构体。 | 1030| windowTop | 需要设置的窗口顶部位置,单位为px。 | 1031 1032**起始版本:** 17 1033 1034**返回:** 1035 1036ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 1037 1038ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 1039 1040**示例代码:** 1041```cpp 1042#include <AbilityKit/ability_runtime/start_options.h> 1043 1044void demo() 1045{ 1046 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1047 if (options == nullptr) { 1048 // 记录错误日志以及其他业务处理 1049 return; 1050 } 1051 1052 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsWindowTop(options, 500); 1053 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1054 // 记录错误日志以及其他业务处理 1055 } 1056 // 销毁options,防止内存泄漏 1057 OH_AbilityRuntime_DestroyStartOptions(&options); 1058} 1059``` 1060 1061### OH_AbilityRuntime_GetStartOptionsWindowTop 1062 1063``` 1064AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsWindowTop(AbilityRuntime_StartOptions *startOptions, int32_t &windowTop); 1065``` 1066 1067**描述** 1068 1069获取启动Ability时的窗口顶部位置,单位为px。 1070 1071**参数:** 1072 1073| 名称 | 描述 | 1074| ----------- | ------------------------------------------------------------ | 1075| startOptions | StartOptions结构体。 | 1076| windowTop | 获取到的窗口顶部位置,单位为px。 | 1077 1078**起始版本:** 17 1079 1080**返回:** 1081 1082ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 1083 1084ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 1085 1086**示例代码:** 1087```cpp 1088#include <AbilityKit/ability_runtime/start_options.h> 1089 1090void demo() 1091{ 1092 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1093 if (options == nullptr) { 1094 // 记录错误日志以及其他业务处理 1095 return; 1096 } 1097 1098 int32_t windowTop = 0; 1099 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsWindowTop(options, windowTop); 1100 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1101 // 记录错误日志以及其他业务处理 1102 } 1103 // 销毁options,防止内存泄漏 1104 OH_AbilityRuntime_DestroyStartOptions(&options); 1105} 1106``` 1107 1108### OH_AbilityRuntime_SetStartOptionsWindowHeight 1109 1110``` 1111AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsWindowHeight(AbilityRuntime_StartOptions *startOptions, int32_t windowHeight); 1112``` 1113 1114**描述** 1115 1116设置启动Ability时的窗口高度,单位为px。 1117 1118**参数:** 1119 1120| 名称 | 描述 | 1121| ----------- | ------------------------------------------------------------ | 1122| startOptions | StartOptions结构体。 | 1123| windowHeight | 需要设置的窗口高度,单位为px。 | 1124 1125**起始版本:** 17 1126 1127**返回:** 1128 1129ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 1130 1131ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 1132 1133**示例代码:** 1134```cpp 1135#include <AbilityKit/ability_runtime/start_options.h> 1136 1137void demo() 1138{ 1139 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1140 if (options == nullptr) { 1141 // 记录错误日志以及其他业务处理 1142 return; 1143 } 1144 1145 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsWindowHeight(options, 500); 1146 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1147 // 记录错误日志以及其他业务处理 1148 } 1149 // 销毁options,防止内存泄漏 1150 OH_AbilityRuntime_DestroyStartOptions(&options); 1151} 1152``` 1153 1154### OH_AbilityRuntime_GetStartOptionsWindowHeight 1155 1156``` 1157AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsWindowHeight(AbilityRuntime_StartOptions *startOptions, int32_t &windowHeight); 1158``` 1159 1160**描述** 1161 1162获取启动Ability时的窗口高度,单位为px。 1163 1164**参数:** 1165 1166| 名称 | 描述 | 1167| ----------- | ------------------------------------------------------------ | 1168| startOptions | StartOptions结构体。 | 1169| windowHeight | 获取到的窗口高度,单位为px。 | 1170 1171**起始版本:** 17 1172 1173**返回:** 1174 1175ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 1176 1177ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 1178 1179**示例代码:** 1180```cpp 1181#include <AbilityKit/ability_runtime/start_options.h> 1182 1183void demo() 1184{ 1185 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1186 if (options == nullptr) { 1187 // 记录错误日志以及其他业务处理 1188 return; 1189 } 1190 1191 int32_t windowHeight = 0; 1192 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsWindowHeight(options, windowHeight); 1193 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1194 // 记录错误日志以及其他业务处理 1195 } 1196 // 销毁options,防止内存泄漏 1197 OH_AbilityRuntime_DestroyStartOptions(&options); 1198} 1199``` 1200 1201### OH_AbilityRuntime_SetStartOptionsWindowWidth 1202 1203``` 1204AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsWindowWidth(AbilityRuntime_StartOptions *startOptions, int32_t windowWidth); 1205``` 1206 1207**描述** 1208 1209设置启动Ability时的窗口宽度,单位为px。 1210 1211**参数:** 1212 1213| 名称 | 描述 | 1214| ----------- | ------------------------------------------------------------ | 1215| startOptions | StartOptions结构体。 | 1216| windowWidth | 需要设置的窗口宽度,单位为px。 | 1217 1218**起始版本:** 17 1219 1220**返回:** 1221 1222ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 1223 1224ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 1225 1226**示例代码:** 1227```cpp 1228#include <AbilityKit/ability_runtime/start_options.h> 1229 1230void demo() 1231{ 1232 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1233 if (options == nullptr) { 1234 // 记录错误日志以及其他业务处理 1235 return; 1236 } 1237 1238 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsWindowWidth(options, 500); 1239 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1240 // 记录错误日志以及其他业务处理 1241 } 1242 // 销毁options,防止内存泄漏 1243 OH_AbilityRuntime_DestroyStartOptions(&options); 1244} 1245``` 1246 1247### OH_AbilityRuntime_GetStartOptionsWindowWidth 1248 1249``` 1250AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsWindowWidth(AbilityRuntime_StartOptions *startOptions, int32_t &windowWidth); 1251``` 1252 1253**描述** 1254 1255获取启动Ability时的窗口宽度,单位为px。 1256 1257**参数:** 1258 1259| 名称 | 描述 | 1260| ----------- | ------------------------------------------------------------ | 1261| startOptions | StartOptions结构体。 | 1262| windowWidth | 获取到的窗口宽度,单位为px。 | 1263 1264**起始版本:** 17 1265 1266**返回:** 1267 1268ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 1269 1270ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 1271 1272**示例代码:** 1273```cpp 1274#include <AbilityKit/ability_runtime/start_options.h> 1275 1276void demo() 1277{ 1278 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1279 if (options == nullptr) { 1280 // 记录错误日志以及其他业务处理 1281 return; 1282 } 1283 1284 int32_t windowWidth = 0; 1285 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsWindowWidth(options, windowWidth); 1286 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1287 // 记录错误日志以及其他业务处理 1288 } 1289 // 销毁options,防止内存泄漏 1290 OH_AbilityRuntime_DestroyStartOptions(&options); 1291} 1292``` 1293 1294### OH_AbilityRuntime_SetStartOptionsStartWindowIcon 1295 1296``` 1297AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsStartWindowIcon(AbilityRuntime_StartOptions *startOptions, OH_PixelmapNative *startWindowIcon) 1298``` 1299 1300**描述** 1301 1302设置启动Ability时的窗口启动图标。图片数据大小限制为600M。 1303 1304**参数:** 1305 1306| 名称 | 描述 | 1307| ----------- | ------------------------------------------------------------ | 1308| startOptions | StartOptions结构体。 | 1309| startWindowIcon | 需要设置的窗口启动图标。 | 1310 1311**起始版本:** 17 1312 1313**返回:** 1314 1315ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 1316 1317ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions或者OH_PixelmapNative信息为空。 1318 1319**示例代码:** 1320```cpp 1321#include <AbilityKit/ability_runtime/start_options.h> 1322 1323void demo() 1324{ 1325 uint8_t data[96]; 1326 size_t dataSize = 96; 1327 for (int i = 0; i < dataSize; i++) { 1328 data[i] = i + 1; 1329 } 1330 1331 //创建参数结构体实例,并设置参数 1332 OH_Pixelmap_InitializationOptions *createOpts = nullptr; 1333 OH_PixelmapInitializationOptions_Create(&createOpts); 1334 OH_PixelmapInitializationOptions_SetWidth(createOpts, 6); 1335 OH_PixelmapInitializationOptions_SetHeight(createOpts, 4); 1336 OH_PixelmapInitializationOptions_SetPixelFormat(createOpts, PIXEL_FORMAT_RGBA_8888); 1337 OH_PixelmapInitializationOptions_SetAlphaType(createOpts, PIXELMAP_ALPHA_TYPE_UNKNOWN); 1338 1339 //创建Pixelmap实例 1340 OH_PixelmapNative *startWindowIcon = nullptr; 1341 Image_ErrorCode errCode = OH_PixelmapNative_CreatePixelmap(data, dataSize, createOpts, &startWindowIcon); 1342 if (errCode != IMAGE_SUCCESS) { 1343 // 记录错误日志以及其他业务处理 1344 1345 // 销毁createOpts,防止内存泄漏 1346 OH_PixelmapInitializationOptions_Release(createOpts); 1347 return; 1348 } 1349 1350 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1351 if (options == nullptr) { 1352 // 记录错误日志以及其他业务处理 1353 1354 // 销毁createOpts,防止内存泄漏 1355 OH_PixelmapInitializationOptions_Release(createOpts); 1356 1357 // 销毁startWindowIcon,防止内存泄漏 1358 OH_PixelmapNative_Release(startWindowIcon); 1359 return; 1360 } 1361 1362 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsStartWindowIcon(options, startWindowIcon); 1363 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1364 // 记录错误日志以及其他业务处理 1365 } 1366 // 销毁createOpts,防止内存泄漏 1367 OH_PixelmapInitializationOptions_Release(createOpts); 1368 1369 // 销毁startWindowIcon,防止内存泄漏 1370 OH_PixelmapNative_Release(startWindowIcon); 1371 1372 // 销毁options,防止内存泄漏 1373 OH_AbilityRuntime_DestroyStartOptions(&options); 1374} 1375``` 1376 1377### OH_AbilityRuntime_SetStartOptionsStartVisibility 1378 1379``` 1380AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsStartVisibility(AbilityRuntime_StartOptions *startOptions, AbilityRuntime_StartVisibility startVisibility); 1381``` 1382 1383**描述** 1384 1385设置启动Ability时窗口和dock栏图标的显示模式。 1386 1387**参数:** 1388 1389| 名称 | 描述 | 1390| ----------- | ------------------------------------------------------------ | 1391| startOptions | StartOptions结构体。 | 1392| startVisibility | 需要设置的显示模式。 | 1393 1394**起始版本:** 17 1395 1396**返回:** 1397 1398ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 1399 1400ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空,或startVisibility取值不在枚举类AbilityRuntime_StartVisibility中。 1401 1402**示例代码:** 1403```cpp 1404#include <AbilityKit/ability_runtime/start_options.h> 1405 1406void demo() 1407{ 1408 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1409 if (options == nullptr) { 1410 // 记录错误日志以及其他业务处理 1411 return; 1412 } 1413 1414 AbilityRuntime_StartVisibility visibility = AbilityRuntime_StartVisibility::ABILITY_RUNTIME_SHOW_UPON_START; 1415 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsStartVisibility(options, visibility); 1416 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1417 // 记录错误日志以及其他业务处理 1418 } 1419 // 销毁options,防止内存泄漏 1420 OH_AbilityRuntime_DestroyStartOptions(&options); 1421} 1422``` 1423 1424### OH_AbilityRuntime_GetStartOptionsStartVisibility 1425 1426``` 1427AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsStartVisibility(AbilityRuntime_StartOptions *startOptions, AbilityRuntime_StartVisibility &startVisibility); 1428``` 1429 1430**描述** 1431 1432获取启动Ability时窗口和dock栏图标的显示模式。 1433 1434**参数:** 1435 1436| 名称 | 描述 | 1437| ----------- | ------------------------------------------------------------ | 1438| startOptions | StartOptions结构体。 | 1439| startVisibility | 获取到的显示模式。 | 1440 1441**起始版本:** 17 1442 1443**返回:** 1444 1445ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 1446 1447ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空,或startVisibility未被设置。 1448 1449**示例代码:** 1450```cpp 1451#include <AbilityKit/ability_runtime/start_options.h> 1452 1453void demo() 1454{ 1455 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1456 if (options == nullptr) { 1457 // 记录错误日志以及其他业务处理 1458 return; 1459 } 1460 1461 AbilityRuntime_StartVisibility visibility; 1462 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsStartVisibility(options, visibility); 1463 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1464 // 记录错误日志以及其他业务处理 1465 } 1466 // 销毁options,防止内存泄漏 1467 OH_AbilityRuntime_DestroyStartOptions(&options); 1468} 1469``` 1470 1471### OH_AbilityRuntime_GetStartOptionsStartWindowIcon 1472 1473``` 1474AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsStartWindowIcon(AbilityRuntime_StartOptions *startOptions, 1475 OH_PixelmapNative **startWindowIcon) 1476``` 1477 1478**描述** 1479 1480获取启动Ability时的窗口启动图标。 1481 1482**参数:** 1483 1484| 名称 | 描述 | 1485| ----------- | ------------------------------------------------------------ | 1486| startOptions | StartOptions结构体。 | 1487| startWindowIcon | 获取到的窗口启动图标。 | 1488 1489**起始版本:** 17 1490 1491**返回:** 1492 1493ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 1494 1495ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空,或者OH_PixelmapNative没有置为空指针。 1496 1497**示例代码:** 1498```cpp 1499#include <AbilityKit/ability_runtime/start_options.h> 1500 1501void demo() 1502{ 1503 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1504 if (options == nullptr) { 1505 // 记录错误日志以及其他业务处理 1506 return; 1507 } 1508 1509 OH_PixelmapNative *startWindowIcon = nullptr; 1510 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsStartWindowIcon(options, &startWindowIcon); 1511 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1512 // 记录错误日志以及其他业务处理 1513 } 1514 1515 // 销毁startWindowIcon,防止内存泄漏 1516 OH_PixelmapNative_Release(startWindowIcon); 1517 1518 // 销毁options,防止内存泄漏 1519 OH_AbilityRuntime_DestroyStartOptions(&options); 1520} 1521``` 1522 1523### OH_AbilityRuntime_SetStartOptionsStartWindowBackgroundColor 1524 1525``` 1526AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsStartWindowBackgroundColor(AbilityRuntime_StartOptions *startOptions, const char *startWindowBackgroundColor) 1527``` 1528 1529**描述** 1530 1531设置启动Ability时的窗口背景颜色。启动UIAbility时,启动页所显示的背景颜色。如果未设置该字段,则默认采用[module.json5配置文件](../../quick-start/module-configuration-file.md)中[abilities标签](../../quick-start/module-configuration-file.md#abilities标签)的startWindowBackground字段的配置。 1532 1533**参数:** 1534 1535| 名称 | 描述 | 1536| ----------- | ------------------------------------------------------------ | 1537| startOptions | StartOptions结构体。 | 1538| startWindowBackgroundColor | 需要设置的窗口背景颜色。固定为ARGB格式, 如:`#E5FFFFFF`。| 1539 1540**起始版本:** 17 1541 1542**返回:** 1543 1544ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 1545 1546ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions或者StartWindowBackgroundColor为空。 1547 1548**示例代码:** 1549```cpp 1550#include <AbilityKit/ability_runtime/start_options.h> 1551 1552void demo() 1553{ 1554 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1555 if (options == nullptr) { 1556 // 记录错误日志以及其他业务处理 1557 return; 1558 } 1559 1560 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsStartWindowBackgroundColor(options, "#00000000"); 1561 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1562 // 记录错误日志以及其他业务处理 1563 } 1564 1565 // 销毁options,防止内存泄漏 1566 OH_AbilityRuntime_DestroyStartOptions(&options); 1567} 1568``` 1569 1570### OH_AbilityRuntime_GetStartOptionsStartWindowBackgroundColor 1571 1572``` 1573AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsStartWindowBackgroundColor(AbilityRuntime_StartOptions *startOptions, char **startWindowBackgroundColor, size_t &size) 1574``` 1575 1576**描述** 1577 1578获取启动Ability时的窗口背景颜色。 1579 1580**参数:** 1581 1582| 名称 | 描述 | 1583| ----------- | ------------------------------------------------------------ | 1584| startOptions | StartOptions结构体。 | 1585| startWindowBackgroundColor | 获取到的窗口背景颜色。固定为ARGB格式, 如:`#E5FFFFFF`。| 1586| size | 获取到的窗口背景颜色的大小。 | 1587 1588**起始版本:** 17 1589 1590**返回:** 1591 1592ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 1593 1594ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空,或者StartWindowBackgroundColor没有置为空指针。 1595 1596ABILITY_RUNTIME_ERROR_CODE_INTERNAL - 开发者无法恢复的内部错误,比如内部调用malloc错误,或者字符串拷贝函数出错。 1597 1598**示例代码:** 1599```cpp 1600#include <cstdlib> 1601 1602#include <AbilityKit/ability_runtime/start_options.h> 1603 1604void demo() 1605{ 1606 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1607 if (options == nullptr) { 1608 // 记录错误日志以及其他业务处理 1609 return; 1610 } 1611 1612 char *startWindowBackgroundColor = nullptr; 1613 size_t size = 0; 1614 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsStartWindowBackgroundColor(options, 1615 &startWindowBackgroundColor, size); 1616 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1617 // 记录错误日志以及其他业务处理 1618 } 1619 1620 if (startWindowBackgroundColor != nullptr) { 1621 // 销毁startWindowBackgroundColor,防止内存泄漏 1622 free(startWindowBackgroundColor); 1623 startWindowBackgroundColor = nullptr; 1624 } 1625 1626 // 销毁options,防止内存泄漏 1627 OH_AbilityRuntime_DestroyStartOptions(&options); 1628} 1629``` 1630 1631### OH_AbilityRuntime_SetStartOptionsSupportedWindowModes 1632 1633``` 1634AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsSupportedWindowModes(AbilityRuntime_StartOptions *startOptions, 1635 AbilityRuntime_SupportedWindowMode *supportedWindowModes, size_t size) 1636``` 1637 1638**描述** 1639 1640设置启动Ability时组件所支持的窗口模式。 1641 1642**参数:** 1643 1644| 名称 | 描述 | 1645| ----------- | ------------------------------------------------------------ | 1646| startOptions | StartOptions结构体。 | 1647| supportedWindowModes | 需要设置的组件所支持的窗口模式。 | 1648| size | 组件所支持的窗口模式的大小。 | 1649 1650**起始版本:** 17 1651 1652**返回:** 1653 1654ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 1655 1656ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions或者SupportedWindowModes为空,或者Size为0。 1657 1658**示例代码:** 1659```cpp 1660#include <AbilityKit/ability_runtime/start_options.h> 1661 1662void demo() 1663{ 1664 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1665 if (options == nullptr) { 1666 // 记录错误日志以及其他业务处理 1667 return; 1668 } 1669 1670 size_t supportedWindowModesSize = 3; 1671 AbilityRuntime_SupportedWindowMode supportedWindowModes[3] = { 1672 ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_FULL_SCREEN, 1673 ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_SPLIT, 1674 ABILITY_RUNTIME_SUPPORTED_WINDOW_MODE_FLOATING, 1675 }; 1676 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsSupportedWindowModes(options, 1677 supportedWindowModes, supportedWindowModesSize); 1678 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1679 // 记录错误日志以及其他业务处理 1680 } 1681 1682 // 销毁options,防止内存泄漏 1683 OH_AbilityRuntime_DestroyStartOptions(&options); 1684} 1685``` 1686 1687### OH_AbilityRuntime_GetStartOptionsSupportedWindowModes 1688 1689``` 1690AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsSupportedWindowModes(AbilityRuntime_StartOptions *startOptions, 1691 AbilityRuntime_SupportedWindowMode **supportedWindowModes, size_t &size) 1692``` 1693 1694**描述** 1695 1696获取启动Ability时组件所支持的窗口模式。 1697 1698**参数:** 1699 1700| 名称 | 描述 | 1701| ----------- | ------------------------------------------------------------ | 1702| startOptions | StartOptions结构体。 | 1703| supportedWindowModes | 获取到的组件所支持的窗口模式。 | 1704| size | 获取到的组件所支持的窗口模式的大小。 | 1705 1706**起始版本:** 17 1707 1708**返回:** 1709 1710ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 1711 1712ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空,或者SupportWindowMode没有置为空指针。 1713 1714ABILITY_RUNTIME_ERROR_CODE_INTERNAL - 开发者无法恢复的内部错误,比如内部调用malloc错误。 1715 1716**示例代码:** 1717```cpp 1718#include <cstdlib> 1719 1720#include <AbilityKit/ability_runtime/start_options.h> 1721 1722void demo() 1723{ 1724 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1725 if (options == nullptr) { 1726 // 记录错误日志以及其他业务处理 1727 return; 1728 } 1729 1730 AbilityRuntime_SupportedWindowMode *supportedWindowModes = nullptr; 1731 size_t size = 0; 1732 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsSupportedWindowModes(options, 1733 &supportedWindowModes, size); 1734 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1735 // 记录错误日志以及其他业务处理 1736 } 1737 1738 if (supportedWindowModes != nullptr) { 1739 // 销毁supportedWindowModes,防止内存泄漏 1740 free(supportedWindowModes); 1741 } 1742 1743 // 销毁options,防止内存泄漏 1744 OH_AbilityRuntime_DestroyStartOptions(&options); 1745} 1746``` 1747 1748### OH_AbilityRuntime_SetStartOptionsMinWindowWidth 1749 1750``` 1751AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsMinWindowWidth(AbilityRuntime_StartOptions *startOptions, 1752 int32_t minWindowWidth) 1753``` 1754 1755**描述** 1756 1757设置启动Ability时的最小窗口宽度,单位为vp。 1758 1759**参数:** 1760 1761| 名称 | 描述 | 1762| ----------- | ------------------------------------------------------------ | 1763| startOptions | StartOptions结构体。 | 1764| minWindowWidth | 需要设置的最小窗口宽度,单位为vp。 | 1765 1766**起始版本:** 17 1767 1768**返回:** 1769 1770ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 1771 1772ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 1773 1774**示例代码:** 1775```cpp 1776#include <AbilityKit/ability_runtime/start_options.h> 1777 1778void demo() 1779{ 1780 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1781 if (options == nullptr) { 1782 // 记录错误日志以及其他业务处理 1783 return; 1784 } 1785 1786 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsMinWindowWidth(options, 100); 1787 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1788 // 记录错误日志以及其他业务处理 1789 } 1790 1791 // 销毁options,防止内存泄漏 1792 OH_AbilityRuntime_DestroyStartOptions(&options); 1793} 1794``` 1795 1796### OH_AbilityRuntime_GetStartOptionsMinWindowWidth 1797 1798``` 1799AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsMinWindowWidth(AbilityRuntime_StartOptions *startOptions, 1800 int32_t &minWindowWidth) 1801``` 1802 1803**描述** 1804 1805获取启动Ability时的最小窗口宽度,单位为vp。 1806 1807**参数:** 1808 1809| 名称 | 描述 | 1810| ----------- | ------------------------------------------------------------ | 1811| startOptions | StartOptions结构体。 | 1812| minWindowWidth | 获取到的最小窗口宽度,单位为vp。 | 1813 1814**起始版本:** 17 1815 1816**返回:** 1817 1818ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 1819 1820ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 1821 1822**示例代码:** 1823```cpp 1824#include <AbilityKit/ability_runtime/start_options.h> 1825 1826void demo() 1827{ 1828 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1829 if (options == nullptr) { 1830 // 记录错误日志以及其他业务处理 1831 return; 1832 } 1833 1834 int32_t minWindowWidth = 0; 1835 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsMinWindowWidth(options, minWindowWidth); 1836 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1837 // 记录错误日志以及其他业务处理 1838 } 1839 1840 // 销毁options,防止内存泄漏 1841 OH_AbilityRuntime_DestroyStartOptions(&options); 1842} 1843``` 1844 1845### OH_AbilityRuntime_SetStartOptionsMaxWindowWidth 1846 1847``` 1848AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsMaxWindowWidth(AbilityRuntime_StartOptions *startOptions, 1849 int32_t maxWindowWidth) 1850``` 1851 1852**描述** 1853 1854设置启动Ability时的最大窗口宽度,单位为vp。 1855 1856**参数:** 1857 1858| 名称 | 描述 | 1859| ----------- | ------------------------------------------------------------ | 1860| startOptions | StartOptions结构体。 | 1861| maxWindowWidth | 需要设置的最大窗口宽度,单位为vp。 | 1862 1863**起始版本:** 17 1864 1865**返回:** 1866 1867ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 1868 1869ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 1870 1871**示例代码:** 1872```cpp 1873#include <AbilityKit/ability_runtime/start_options.h> 1874 1875void demo() 1876{ 1877 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1878 if (options == nullptr) { 1879 // 记录错误日志以及其他业务处理 1880 return; 1881 } 1882 1883 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsMaxWindowWidth(options, 100); 1884 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1885 // 记录错误日志以及其他业务处理 1886 } 1887 1888 // 销毁options,防止内存泄漏 1889 OH_AbilityRuntime_DestroyStartOptions(&options); 1890} 1891``` 1892 1893### OH_AbilityRuntime_GetStartOptionsMaxWindowWidth 1894 1895``` 1896AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsMaxWindowWidth(AbilityRuntime_StartOptions *startOptions, 1897 int32_t &maxWindowWidth) 1898``` 1899 1900**描述** 1901 1902获取启动Ability时的最大窗口宽度,单位为vp。 1903 1904**参数:** 1905 1906| 名称 | 描述 | 1907| ----------- | ------------------------------------------------------------ | 1908| startOptions | StartOptions结构体。 | 1909| maxWindowWidth | 获取到的最大窗口宽度,单位为vp。 | 1910 1911**起始版本:** 17 1912 1913**返回:** 1914 1915ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 1916 1917ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 1918 1919**示例代码:** 1920```cpp 1921#include <AbilityKit/ability_runtime/start_options.h> 1922 1923void demo() 1924{ 1925 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1926 if (options == nullptr) { 1927 // 记录错误日志以及其他业务处理 1928 return; 1929 } 1930 1931 int32_t maxWindowWidth = 0; 1932 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsMaxWindowWidth(options, maxWindowWidth); 1933 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1934 // 记录错误日志以及其他业务处理 1935 } 1936 1937 // 销毁options,防止内存泄漏 1938 OH_AbilityRuntime_DestroyStartOptions(&options); 1939} 1940``` 1941 1942### OH_AbilityRuntime_SetStartOptionsMinWindowHeight 1943 1944``` 1945AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsMinWindowHeight(AbilityRuntime_StartOptions *startOptions, 1946 int32_t minWindowHeight) 1947``` 1948 1949**描述** 1950 1951设置启动Ability时的最小窗口高度,单位为vp。 1952 1953**参数:** 1954 1955| 名称 | 描述 | 1956| ----------- | ------------------------------------------------------------ | 1957| startOptions | StartOptions结构体。 | 1958| minWindowHeight | 需要设置的最小窗口高度,单位为vp。 | 1959 1960**起始版本:** 17 1961 1962**返回:** 1963 1964ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 1965 1966ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 1967 1968**示例代码:** 1969```cpp 1970#include <AbilityKit/ability_runtime/start_options.h> 1971 1972void demo() 1973{ 1974 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 1975 if (options == nullptr) { 1976 // 记录错误日志以及其他业务处理 1977 return; 1978 } 1979 1980 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsMinWindowHeight(options, 100); 1981 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 1982 // 记录错误日志以及其他业务处理 1983 } 1984 1985 // 销毁options,防止内存泄漏 1986 OH_AbilityRuntime_DestroyStartOptions(&options); 1987} 1988``` 1989 1990### OH_AbilityRuntime_GetStartOptionsMinWindowHeight 1991 1992``` 1993AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsMinWindowHeight(AbilityRuntime_StartOptions *startOptions, 1994 int32_t &minWindowHeight) 1995``` 1996 1997**描述** 1998 1999获取启动Ability时的最小窗口高度,单位为vp。 2000 2001**参数:** 2002 2003| 名称 | 描述 | 2004| ----------- | ------------------------------------------------------------ | 2005| startOptions | StartOptions结构体。 | 2006| minWindowHeight | 获取到的最小窗口高度,单位为vp。 | 2007 2008**起始版本:** 17 2009 2010**返回:** 2011 2012ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 2013 2014ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 2015 2016**示例代码:** 2017```cpp 2018#include <AbilityKit/ability_runtime/start_options.h> 2019 2020void demo() 2021{ 2022 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 2023 if (options == nullptr) { 2024 // 记录错误日志以及其他业务处理 2025 return; 2026 } 2027 2028 int32_t minWindowHeight = 0; 2029 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsMinWindowHeight(options, minWindowHeight); 2030 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 2031 // 记录错误日志以及其他业务处理 2032 } 2033 2034 // 销毁options,防止内存泄漏 2035 OH_AbilityRuntime_DestroyStartOptions(&options); 2036} 2037``` 2038 2039### OH_AbilityRuntime_SetStartOptionsMaxWindowHeight 2040 2041``` 2042AbilityRuntime_ErrorCode OH_AbilityRuntime_SetStartOptionsMaxWindowHeight(AbilityRuntime_StartOptions *startOptions, 2043 int32_t maxWindowHeight) 2044``` 2045 2046**描述** 2047 2048设置启动Ability时的最大窗口高度,单位为vp。 2049 2050**参数:** 2051 2052| 名称 | 描述 | 2053| ----------- | ------------------------------------------------------------ | 2054| startOptions | StartOptions结构体。 | 2055| maxWindowHeight | 需要设置的最大窗口高度,单位为vp。 | 2056 2057**起始版本:** 17 2058 2059**返回:** 2060 2061ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 设置成功。 2062 2063ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 2064 2065**示例代码:** 2066```cpp 2067#include <AbilityKit/ability_runtime/start_options.h> 2068 2069void demo() 2070{ 2071 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 2072 if (options == nullptr) { 2073 // 记录错误日志以及其他业务处理 2074 return; 2075 } 2076 2077 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_SetStartOptionsMaxWindowHeight(options, 100); 2078 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 2079 // 记录错误日志以及其他业务处理 2080 } 2081 2082 // 销毁options,防止内存泄漏 2083 OH_AbilityRuntime_DestroyStartOptions(&options); 2084} 2085``` 2086 2087### OH_AbilityRuntime_GetStartOptionsMaxWindowHeight 2088 2089``` 2090AbilityRuntime_ErrorCode OH_AbilityRuntime_GetStartOptionsMaxWindowHeight(AbilityRuntime_StartOptions *startOptions, 2091 int32_t &maxWindowHeight) 2092``` 2093 2094**描述** 2095 2096获取启动Ability时的最大窗口高度,单位为vp。 2097 2098**参数:** 2099 2100| 名称 | 描述 | 2101| ----------- | ------------------------------------------------------------ | 2102| startOptions | StartOptions结构体。 | 2103| maxWindowHeight | 获取到的最大窗口高度,单位为vp。 | 2104 2105**起始版本:** 17 2106 2107**返回:** 2108 2109ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 获取成功。 2110 2111ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - StartOptions为空。 2112 2113**示例代码:** 2114```cpp 2115#include <AbilityKit/ability_runtime/start_options.h> 2116 2117void demo() 2118{ 2119 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 2120 if (options == nullptr) { 2121 // 记录错误日志以及其他业务处理 2122 return; 2123 } 2124 2125 int32_t maxWindowHeight = 0; 2126 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_GetStartOptionsMaxWindowHeight(options, maxWindowHeight); 2127 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 2128 // 记录错误日志以及其他业务处理 2129 } 2130 2131 // 销毁options,防止内存泄漏 2132 OH_AbilityRuntime_DestroyStartOptions(&options); 2133} 2134``` 2135 2136### OH_AbilityRuntime_StartSelfUIAbilityWithStartOptions 2137 2138``` 2139AbilityRuntime_ErrorCode OH_AbilityRuntime_StartSelfUIAbilityWithStartOptions(AbilityBase_Want *want, AbilityRuntime_StartOptions *options) 2140``` 2141 2142**描述** 2143 2144启动当前应用的UIAbility。 2145 2146> **说明:** 2147> 2148> 当前仅支持2in1设备。 2149 2150**需要权限**:ohos.permission.NDK_START_SELF_UI_ABILITY 2151 2152**起始版本:** 17 2153 2154**参数:** 2155 2156| 名称 | 描述 | 2157| ----------- | ------------------------------------------------------------ | 2158| want | 启动当前应用UIAbility时需要的Want信息。 | 2159| options | 启动当前应用UIAbility时需要的StartOptions信息。<br>**说明:**<br>如果该参数中[startVisibility](#abilityruntime_startvisibility)属性的值不为空,必须确保当前应用已添加到状态栏,否则会返回ABILITY_RUNTIME_ERROR_VISIBILITY_SETTING_DISABLED错误码。 | 2160 2161**返回:** 2162 2163ABILITY_RUNTIME_ERROR_CODE_NO_ERROR - 成功。 2164 2165ABILITY_RUNTIME_ERROR_CODE_PERMISSION_DENIED - 权限校验失败。 2166 2167ABILITY_RUNTIME_ERROR_CODE_PARAM_INVALID - Want或者StartOptions为空,或者Want信息里bundleName或abilityName为空。 2168 2169ABILITY_RUNTIME_ERROR_CODE_NOT_SUPPORTED - 设备类型不支持。 2170 2171ABILITY_RUNTIME_ERROR_CODE_NO_SUCH_ABILITY - 指定的Ability名称不存在。 2172 2173ABILITY_RUNTIME_ERROR_CODE_INCORRECT_ABILITY_TYPE - 接口调用Ability类型错误。 2174 2175ABILITY_RUNTIME_ERROR_CODE_CROWDTEST_EXPIRED - 众测应用到期。 2176 2177ABILITY_RUNTIME_ERROR_CODE_WUKONG_MODE - wukong模式,不允许启动/停止Ability。 2178 2179ABILITY_RUNTIME_ERROR_CODE_CONTROLLED - 应用被管控。 2180 2181ABILITY_RUNTIME_ERROR_CODE_EDM_CONTROLLED - 应用被EDM管控。 2182 2183ABILITY_RUNTIME_ERROR_CODE_CROSS_APP - 禁止拉起其他应用。 2184 2185ABILITY_RUNTIME_ERROR_CODE_INTERNAL - 内部错误。 2186 2187ABILITY_RUNTIME_ERROR_CODE_NOT_TOP_ABILITY - 当前应用不是前台进程。 2188 2189ABILITY_RUNTIME_ERROR_VISIBILITY_SETTING_DISABLED - 禁止设置应用启动可见性。 2190 2191ABILITY_RUNTIME_ERROR_CODE_MULTI_APP_NOT_SUPPORTED - 应用不支持分身和多实例。 2192 2193ABILITY_RUNTIME_ERROR_CODE_INVALID_APP_INSTANCE_KEY - 传入的instanceKey无效。 2194 2195ABILITY_RUNTIME_ERROR_CODE_UPPER_LIMIT_REACHED - 多实例已达到上限。 2196 2197ABILITY_RUNTIME_ERROR_MULTI_INSTANCE_NOT_SUPPORTED - 应用不支持多实例。 2198 2199ABILITY_RUNTIME_ERROR_CODE_APP_INSTANCE_KEY_NOT_SUPPORTED - APP_INSTANCE_KEY不能被赋值。 2200 2201**示例代码:** 2202```cpp 2203#include <AbilityKit/ability_base/want.h> 2204#include <AbilityKit/ability_runtime/application_context.h> 2205 2206void demo() 2207{ 2208 AbilityBase_Element element; 2209 element.abilityName = const_cast<char*>("EntryAbility"); 2210 element.bundleName = const_cast<char*>("com.exampl.myapplication"); 2211 element.moduleName = const_cast<char*>("entry"); 2212 AbilityBase_Want* want = OH_AbilityBase_CreateWant(element); 2213 if (want == nullptr) { 2214 // 记录错误日志以及其他业务处理 2215 return; 2216 } 2217 2218 AbilityRuntime_StartOptions* options = OH_AbilityRuntime_CreateStartOptions(); 2219 if (options == nullptr) { 2220 // 记录错误日志以及其他业务处理 2221 2222 // 销毁want,防止内存泄漏 2223 OH_AbilityBase_DestroyWant(want); 2224 return; 2225 } 2226 AbilityRuntime_ErrorCode err = OH_AbilityRuntime_StartSelfUIAbilityWithStartOptions(want, options); 2227 if (err != ABILITY_RUNTIME_ERROR_CODE_NO_ERROR) { 2228 // 记录错误日志以及其他业务处理 2229 } 2230 // 销毁want,防止内存泄漏 2231 OH_AbilityBase_DestroyWant(want); 2232 2233 // 销毁options,防止内存泄漏 2234 OH_AbilityRuntime_DestroyStartOptions(&options); 2235} 2236``` 2237