• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# native_node_napi.h
2<!--Kit: ArkUI-->
3<!--Subsystem: ArkUI-->
4<!--Owner: @piggyguy; @xiang-shouxing; @yangfan229-->
5<!--Designer: @piggyguy; @xiang-shouxing; @yangfan229-->
6<!--Tester: @fredyuan912-->
7<!--Adviser: @HelloCrease-->
8
9## 概述
10
11提供ArkTS侧的FrameNode转换NodeHandle的方式。
12
13**引用文件:** <arkui/native_node_napi.h>
14
15**库:** libace_ndk.z.so
16
17**系统能力:** SystemCapability.ArkUI.ArkUI.Full
18
19**起始版本:** 12
20
21**相关模块:** [ArkUI_NativeModule](capi-arkui-nativemodule.md)
22
23## 汇总
24
25### 函数
26
27| 名称 | 描述 |
28| -- | -- |
29| [int32_t OH_ArkUI_GetNodeHandleFromNapiValue(napi_env env, napi_value frameNode, ArkUI_NodeHandle* handle)](#oh_arkui_getnodehandlefromnapivalue) | 获取ArkTS侧创建的FrameNode节点对象映射到Native侧的ArkUI_NodeHandle。 |
30| [int32_t OH_ArkUI_GetContextFromNapiValue(napi_env env, napi_value value, ArkUI_ContextHandle* context)](#oh_arkui_getcontextfromnapivalue) | 获取ArkTS侧创建的UIContext对象映射到Native侧的ArkUI_ContextHandle。 |
31| [int32_t OH_ArkUI_GetNodeContentFromNapiValue(napi_env env, napi_value value, ArkUI_NodeContentHandle* content)](#oh_arkui_getnodecontentfromnapivalue) | 获取ArkTS侧创建的NodeContent对象映射到Native侧的ArkUI_NodeContentHandle。 |
32| [int32_t OH_ArkUI_GetDrawableDescriptorFromNapiValue(napi_env env, napi_value value, ArkUI_DrawableDescriptor** drawableDescriptor)](#oh_arkui_getdrawabledescriptorfromnapivalue) | 将ArkTS侧创建的DrawableDescriptor对象映射到Native侧的ArkUI_DrawableDescriptor。 |
33| [int32_t OH_ArkUI_GetDrawableDescriptorFromResourceNapiValue(napi_env env, napi_value value, ArkUI_DrawableDescriptor** drawableDescriptor)](#oh_arkui_getdrawabledescriptorfromresourcenapivalue) | 将ArkTS侧创建的$r资源对象映射到Native侧的ArkUI_DrawableDescriptor。 |
34| [ArkUI_ErrorCode OH_ArkUI_GetNavigationId(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getnavigationid) | 获取当前节点所在的Navigation组件的ID。 |
35| [ArkUI_ErrorCode OH_ArkUI_GetNavDestinationName(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getnavdestinationname) | 获取当前节点所在的NavDestination组件的名称。 |
36| [ArkUI_ErrorCode OH_ArkUI_GetNavStackLength(ArkUI_NodeHandle node, int32_t* length)](#oh_arkui_getnavstacklength) | 根据给定索引值,获取当前节点所在的Navigation栈的长度。 |
37| [ArkUI_ErrorCode OH_ArkUI_GetNavDestinationNameByIndex(ArkUI_NodeHandle node, int32_t index, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getnavdestinationnamebyindex) | 根据给定索引值,获取当前节点所在的Navigation栈中对应位置的页面名称。索引值从0开始计数,0为栈底。 |
38| [ArkUI_ErrorCode OH_ArkUI_GetNavDestinationId(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getnavdestinationid) | 获取当前节点所在的NavDestination组件的ID。 |
39| [ArkUI_ErrorCode OH_ArkUI_GetNavDestinationState(ArkUI_NodeHandle node, ArkUI_NavDestinationState* state)](#oh_arkui_getnavdestinationstate) | 获取当前节点所在的NavDestination组件的状态。 |
40| [ArkUI_ErrorCode OH_ArkUI_GetNavDestinationIndex(ArkUI_NodeHandle node, int32_t* index)](#oh_arkui_getnavdestinationindex) | 获取当前节点所在的NavDestination组件在页面栈的索引。 |
41| [napi_value OH_ArkUI_GetNavDestinationParam(ArkUI_NodeHandle node)](#oh_arkui_getnavdestinationparam) | 获取当前节点所在的NavDestination组件的参数。 |
42| [ArkUI_ErrorCode OH_ArkUI_GetRouterPageIndex(ArkUI_NodeHandle node, int32_t* index)](#oh_arkui_getrouterpageindex) | 获取当前节点所在页面在Router页面栈中的索引。 |
43| [ArkUI_ErrorCode OH_ArkUI_GetRouterPageName(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getrouterpagename) | 获取当前节点所在页面的名称。 |
44| [ArkUI_ErrorCode OH_ArkUI_GetRouterPagePath(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getrouterpagepath) | 获取当前节点所在页面的Page组件的路径。 |
45| [ArkUI_ErrorCode OH_ArkUI_GetRouterPageState(ArkUI_NodeHandle node, ArkUI_RouterPageState* state)](#oh_arkui_getrouterpagestate) | 获取当前节点所在页面的Page组件的状态。 |
46| [ArkUI_ErrorCode OH_ArkUI_GetRouterPageId(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)](#oh_arkui_getrouterpageid) | 获取当前节点所在页面的Page组件的ID。 |
47| [ArkUI_ErrorCode OH_ArkUI_InitModuleForArkTSEnv(napi_env env)](#oh_arkui_initmoduleforarktsenv) | 初始化指定上下文环境的ArkUI相关接口。该函数禁止在非UI线程中调用,否则程序将主动abort。 |
48| [void OH_ArkUI_NotifyArkTSEnvDestroy(napi_env env)](#oh_arkui_notifyarktsenvdestroy) | 通知指定的上下文环境已销毁。该函数禁止在非UI线程中调用,否则程序将主动abort。 |
49| [int32_t OH_ArkUI_PostFrameCallback(ArkUI_ContextHandle uiContext, void* userData,void (\*callback)(uint64_t nanoTimestamp, uint32_t frameCount, void* userData))](#oh_arkui_postframecallback) | 注册一个回调函数,以便在下一帧渲染时执行。不允许在非UI线程调用,检查到非UI线程调用程序会主动中止。 |
50| [int32_t OH_ArkUI_PostIdleCallback(ArkUI_ContextHandle uiContext, void* userData,void (\*callback)(uint64_t nanoTimeLeft, uint32_t frameCount, void* userData))](#oh_arkui_postidlecallback) | 注册一个回调函数,在下一帧渲染结束后如果距离下一个Vsync信号到来剩余时间大于1ms时,该回调函数将被执行;如果剩余时间小于1ms时,回调函数将被顺延至当某个下一帧的剩余时间大于1ms时再执行。如果当前没有下一帧,将自动请求下一帧。 |
51
52## 函数说明
53
54### OH_ArkUI_GetNodeHandleFromNapiValue()
55
56```
57int32_t OH_ArkUI_GetNodeHandleFromNapiValue(napi_env env, napi_value frameNode, ArkUI_NodeHandle* handle)
58```
59
60**描述:**
61
62
63获取ArkTS侧创建的FrameNode节点对象映射到Native侧的ArkUI_NodeHandle。
64
65**起始版本:** 12
66
67
68**参数:**
69
70| 参数项 | 描述 |
71| -- | -- |
72| napi_env env | napi的环境指针。 |
73| napi_value frameNode | ArkTS侧创建的FrameNode对象。 |
74| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md)* handle | ArkUI_NodeHandle指针。 |
75
76**返回:**
77
78| 类型 | 说明 |
79| -- | -- |
80| int32_t | 错误码。<br>         [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>         [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
81
82### OH_ArkUI_GetContextFromNapiValue()
83
84```
85int32_t OH_ArkUI_GetContextFromNapiValue(napi_env env, napi_value value, ArkUI_ContextHandle* context)
86```
87
88**描述:**
89
90
91获取ArkTS侧创建的UIContext对象映射到Native侧的ArkUI_ContextHandle。
92
93**起始版本:** 12
94
95
96**参数:**
97
98| 参数项 | 描述 |
99| -- | -- |
100| napi_env env | napi的环境指针。 |
101| napi_value value | ArkTS侧创建的context对象。 |
102| [ArkUI_ContextHandle](capi-arkui-nativemodule-arkui-context8h.md)* context | ArkUI_ContextHandle指针。 |
103
104**返回:**
105
106| 类型 | 说明 |
107| -- | -- |
108| int32_t | 错误码。<br>         [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>         [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
109
110### OH_ArkUI_GetNodeContentFromNapiValue()
111
112```
113int32_t OH_ArkUI_GetNodeContentFromNapiValue(napi_env env, napi_value value, ArkUI_NodeContentHandle* content)
114```
115
116**描述:**
117
118
119获取ArkTS侧创建的NodeContent对象映射到Native侧的ArkUI_NodeContentHandle。
120
121**起始版本:** 12
122
123
124**参数:**
125
126| 参数项 | 描述 |
127| -- | -- |
128| napi_env env | napi的环境指针。 |
129| napi_value value | ArkTS侧创建的NodeContent对象。 |
130| content | ArkUI_NodeContentHandle指针。 |
131
132**返回:**
133
134| 类型 | 说明 |
135| -- | -- |
136| int32_t | 错误码。<br>         [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>         [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
137
138### OH_ArkUI_GetDrawableDescriptorFromNapiValue()
139
140```
141int32_t OH_ArkUI_GetDrawableDescriptorFromNapiValue(napi_env env, napi_value value, ArkUI_DrawableDescriptor** drawableDescriptor)
142```
143
144**描述:**
145
146
147将ArkTS侧创建的DrawableDescriptor对象映射到Native侧的ArkUI_DrawableDescriptor。
148
149**起始版本:** 12
150
151
152**参数:**
153
154| 参数项 | 描述 |
155| -- | -- |
156| napi_env env | napi的环境指针。 |
157| napi_value value | ArkTS侧创建的DrawableDescriptor对象。 |
158| [ArkUI_DrawableDescriptor](capi-arkui-nativemodule-arkui-drawabledescriptor.md)** drawableDescriptor | 接受ArkUI_DrawableDescriptor指针的对象。 |
159
160**返回:**
161
162| 类型 | 说明 |
163| -- | -- |
164| int32_t | 错误码。<br>         [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>         [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
165
166### OH_ArkUI_GetDrawableDescriptorFromResourceNapiValue()
167
168```
169int32_t OH_ArkUI_GetDrawableDescriptorFromResourceNapiValue(napi_env env, napi_value value, ArkUI_DrawableDescriptor** drawableDescriptor)
170```
171
172**描述:**
173
174
175将ArkTS侧创建的$r资源对象映射到Native侧的ArkUI_DrawableDescriptor。
176
177**起始版本:** 12
178
179
180**参数:**
181
182| 参数项 | 描述 |
183| -- | -- |
184| napi_env env | napi的环境指针。 |
185| napi_value value | ArkTS侧创建的$r资源对象。 |
186| [ArkUI_DrawableDescriptor](capi-arkui-nativemodule-arkui-drawabledescriptor.md)** drawableDescriptor | 接受ArkUI_DrawableDescriptor指针的对象。 |
187
188**返回:**
189
190| 类型 | 说明 |
191| -- | -- |
192| int32_t | 错误码。<br>         [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>         [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。 |
193
194### OH_ArkUI_GetNavigationId()
195
196```
197ArkUI_ErrorCode OH_ArkUI_GetNavigationId(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)
198```
199
200**描述:**
201
202
203获取当前节点所在的Navigation组件的ID。
204
205**起始版本:** 12
206
207
208**参数:**
209
210| 参数项 | 描述 |
211| -- | -- |
212| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
213| char* buffer | 缓冲区,NavigationID写入该内存区域。 |
214| int32_t bufferSize | 缓冲区大小。 |
215| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。                     在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 |
216
217**返回:**
218
219| 类型 | 说明 |
220| -- | -- |
221| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>        [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>        [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>        [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。<br>        [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 |
222
223### OH_ArkUI_GetNavDestinationName()
224
225```
226ArkUI_ErrorCode OH_ArkUI_GetNavDestinationName(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)
227```
228
229**描述:**
230
231
232获取当前节点所在的NavDestination组件的名称。
233
234**起始版本:** 12
235
236
237**参数:**
238
239| 参数项 | 描述 |
240| -- | -- |
241| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
242| char* buffer | 缓冲区,被查询的NavDestination名称写入该内存区域。 |
243| int32_t bufferSize | 缓冲区大小。 |
244| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。                     在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 |
245
246**返回:**
247
248| 类型 | 说明 |
249| -- | -- |
250| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>        [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>        [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>        [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。<br>        [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 |
251
252### OH_ArkUI_GetNavStackLength()
253
254```
255ArkUI_ErrorCode OH_ArkUI_GetNavStackLength(ArkUI_NodeHandle node, int32_t* length)
256```
257
258**描述:**
259
260
261根据给定索引值,获取当前节点所在的Navigation栈的长度。
262
263**起始版本:** 12
264
265
266**参数:**
267
268| 参数项 | 描述 |
269| -- | -- |
270| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
271| int32_t* length | 栈的长度。查询成功后将结果写回该参数。 |
272
273**返回:**
274
275| 类型 | 说明 |
276| -- | -- |
277| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>        [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>        [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>        [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。 |
278
279### OH_ArkUI_GetNavDestinationNameByIndex()
280
281```
282ArkUI_ErrorCode OH_ArkUI_GetNavDestinationNameByIndex(ArkUI_NodeHandle node, int32_t index, char* buffer, int32_t bufferSize, int32_t* writeLength)
283```
284
285**描述:**
286
287
288根据给定索引值,获取当前节点所在的Navigation栈中对应位置的页面名称。索引值从0开始计数,0为栈底。
289
290**起始版本:** 12
291
292
293**参数:**
294
295| 参数项 | 描述 |
296| -- | -- |
297| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
298| int32_t index | 被查询NavDestination在栈中的索引。 |
299| char* buffer | 缓冲区,被查询页面的名称写入该内存区域。 |
300| int32_t bufferSize | 缓冲区大小。 |
301| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。                     在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 |
302
303**返回:**
304
305| 类型 | 说明 |
306| -- | -- |
307| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>        [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>        [ARKUI_ERROR_CODE_NODE_INDEX_INVALID](capi-native-type-h.md#arkui_errorcode) index为非法值。<br>        [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。<br>        [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 |
308
309### OH_ArkUI_GetNavDestinationId()
310
311```
312ArkUI_ErrorCode OH_ArkUI_GetNavDestinationId(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)
313```
314
315**描述:**
316
317
318获取当前节点所在的NavDestination组件的ID。
319
320**起始版本:** 12
321
322
323**参数:**
324
325| 参数项 | 描述 |
326| -- | -- |
327| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
328| char* buffer | 缓冲区,NavDestinationID写入该内存区域。 |
329| int32_t bufferSize | 缓冲区大小。 |
330| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。                     在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 |
331
332**返回:**
333
334| 类型 | 说明 |
335| -- | -- |
336| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>        [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>        [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>        [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。<br>        [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 |
337
338### OH_ArkUI_GetNavDestinationState()
339
340```
341ArkUI_ErrorCode OH_ArkUI_GetNavDestinationState(ArkUI_NodeHandle node, ArkUI_NavDestinationState* state)
342```
343
344**描述:**
345
346
347获取当前节点所在的NavDestination组件的状态。
348
349**起始版本:** 12
350
351
352**参数:**
353
354| 参数项 | 描述 |
355| -- | -- |
356| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
357| [ArkUI_NavDestinationState](capi-native-type-h.md#arkui_navdestinationstate)* state | NavDestination的状态值写回该参数中。 |
358
359**返回:**
360
361| 类型 | 说明 |
362| -- | -- |
363| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>        [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>        [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>        [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。 |
364
365### OH_ArkUI_GetNavDestinationIndex()
366
367```
368ArkUI_ErrorCode OH_ArkUI_GetNavDestinationIndex(ArkUI_NodeHandle node, int32_t* index)
369```
370
371**描述:**
372
373
374获取当前节点所在的NavDestination组件在页面栈的索引。
375
376**起始版本:** 12
377
378
379**参数:**
380
381| 参数项 | 描述 |
382| -- | -- |
383| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
384| int32_t* index | 索引值,从0开始计数。 |
385
386**返回:**
387
388| 类型 | 说明 |
389| -- | -- |
390| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>        [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>        [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>        [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。 |
391
392### OH_ArkUI_GetNavDestinationParam()
393
394```
395napi_value OH_ArkUI_GetNavDestinationParam(ArkUI_NodeHandle node)
396```
397
398**描述:**
399
400
401获取当前节点所在的NavDestination组件的参数。
402
403**起始版本:** 12
404
405
406**参数:**
407
408| 参数项 | 描述 |
409| -- | -- |
410| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
411
412**返回:**
413
414| 类型 | 说明 |
415| -- | -- |
416| napi_value | 参数对象。如返回为空,则说明参数不存在或指定的节点为空。|
417
418### OH_ArkUI_GetRouterPageIndex()
419
420```
421ArkUI_ErrorCode OH_ArkUI_GetRouterPageIndex(ArkUI_NodeHandle node, int32_t* index)
422```
423
424**描述:**
425
426
427获取当前节点所在页面在Router页面栈中的索引。
428
429**起始版本:** 12
430
431
432**参数:**
433
434| 参数项 | 描述 |
435| -- | -- |
436| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
437| int32_t* index | 索引值,从1开始计数。 |
438
439**返回:**
440
441| 类型 | 说明 |
442| -- | -- |
443| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br> [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 指定的节点或传递的索引异常。<br>[ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败,可能因为当前节点不在Navigation中。 |
444
445### OH_ArkUI_GetRouterPageName()
446
447```
448ArkUI_ErrorCode OH_ArkUI_GetRouterPageName(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)
449```
450
451**描述:**
452
453
454获取当前节点所在页面的名称。
455
456**起始版本:** 12
457
458
459**参数:**
460
461| 参数项 | 描述 |
462| -- | -- |
463| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
464| char* buffer | 缓冲区,页面名称写入该内存区域。 |
465| int32_t bufferSize | 缓冲区大小。 |
466| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。                     在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 |
467
468**返回:**
469
470| 类型 | 说明 |
471| -- | -- |
472| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>        [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>        [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>        [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败。<br>        [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 |
473
474### OH_ArkUI_GetRouterPagePath()
475
476```
477ArkUI_ErrorCode OH_ArkUI_GetRouterPagePath(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)
478```
479
480**描述:**
481
482
483获取当前节点所在页面的Page组件的路径。
484
485**起始版本:** 12
486
487
488**参数:**
489
490| 参数项 | 描述 |
491| -- | -- |
492| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
493| char* buffer | 缓冲区,Page Path写入该内存区域。 |
494| int32_t bufferSize | 缓冲区大小。 |
495| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。                     在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 |
496
497**返回:**
498
499| 类型 | 说明 |
500| -- | -- |
501| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>        [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>        [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>        [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败。<br>        [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 |
502
503### OH_ArkUI_GetRouterPageState()
504
505```
506ArkUI_ErrorCode OH_ArkUI_GetRouterPageState(ArkUI_NodeHandle node, ArkUI_RouterPageState* state)
507```
508
509**描述:**
510
511
512获取当前节点所在页面的Page组件的状态。
513
514**起始版本:** 12
515
516
517**参数:**
518
519| 参数项 | 描述 |
520| -- | -- |
521| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
522| [ArkUI_RouterPageState](capi-native-type-h.md#arkui_routerpagestate)* state | Router Page的状态值写回该参数中。 |
523
524**返回:**
525
526| 类型 | 说明 |
527| -- | -- |
528| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>        [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>        [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>        [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败。 |
529
530### OH_ArkUI_GetRouterPageId()
531
532```
533ArkUI_ErrorCode OH_ArkUI_GetRouterPageId(ArkUI_NodeHandle node, char* buffer, int32_t bufferSize, int32_t* writeLength)
534```
535
536**描述:**
537
538
539获取当前节点所在页面的Page组件的ID。
540
541**起始版本:** 12
542
543
544**参数:**
545
546| 参数项 | 描述 |
547| -- | -- |
548| [ArkUI_NodeHandle](capi-arkui-nativemodule-arkui-node8h.md) node | 指定的节点。 |
549| char* buffer | 缓冲区,Page Id写入该内存区域。 |
550| int32_t bufferSize | 缓冲区大小。 |
551| int32_t* writeLength | 在返回[ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode)时表示实际写入到缓冲区的字符串长度。                     在返回[ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode)时表示可以容纳目标的最小缓冲区大小。 |
552
553**返回:**
554
555| 类型 | 说明 |
556| -- | -- |
557| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>        [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>        [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 函数参数异常。<br>        [ARKUI_ERROR_CODE_GET_INFO_FAILED](capi-native-type-h.md#arkui_errorcode) 查询信息失败。<br>        [ARKUI_ERROR_CODE_BUFFER_SIZE_ERROR](capi-native-type-h.md#arkui_errorcode) 给定的buffer size小于可以容纳目标的最小缓冲区大小。 |
558
559### OH_ArkUI_InitModuleForArkTSEnv()
560
561```
562ArkUI_ErrorCode OH_ArkUI_InitModuleForArkTSEnv(napi_env env)
563```
564
565**描述:**
566
567
568初始化指定上下文环境的ArkUI相关接口。该函数禁止在非UI线程中调用,否则程序将主动abort。
569
570**起始版本:** 20
571
572
573**参数:**
574
575| 参数项 | 描述 |
576| -- | -- |
577| napi_env env | Node-API的环境指针。 |
578
579**返回:**
580
581| 类型 | 说明 |
582| -- | -- |
583| [ArkUI_ErrorCode](capi-native-type-h.md#arkui_errorcode) | 错误码。<br>         [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>         [ARKUI_ERROR_CODE_PARAM_INVALID](capi-native-type-h.md#arkui_errorcode) 参数无效(如env为null或设置白名单失败)。<br>         [ARKUI_ERROR_CODE_CAPI_INIT_ERROR](capi-native-type-h.md#arkui_errorcode) CAPI初始化错误。 |
584
585### OH_ArkUI_NotifyArkTSEnvDestroy()
586
587```
588void OH_ArkUI_NotifyArkTSEnvDestroy(napi_env env)
589```
590
591**描述:**
592
593
594通知指定的上下文环境已销毁。该函数禁止在非UI线程中调用,否则程序将主动abort。
595
596**起始版本:** 20
597
598
599**参数:**
600
601| 参数项 | 描述 |
602| -- | -- |
603| napi_env env | Node-API的环境指针。 |
604
605### OH_ArkUI_PostFrameCallback()
606
607```
608int32_t OH_ArkUI_PostFrameCallback(ArkUI_ContextHandle uiContext, void* userData,void (*callback)(uint64_t nanoTimestamp, uint32_t frameCount, void* userData))
609```
610
611**描述:**
612
613
614注册一个回调函数,以便在下一帧渲染时执行。不允许在非UI线程调用,检查到非UI线程调用程序会主动中止。
615
616**起始版本:** 18
617
618
619**参数:**
620
621| 参数项 | 描述 |
622| -- | -- |
623| ArkUI_ContextHandle uiContext | UIContext对象,用以绑定实例。 |
624|  void* userData | 自定义事件参数,当事件触发时在回调参数中携带回来。 |
625| callback | 自定义回调函数。 |
626| uint64_t nanoTimestamp | 帧信号的时间戳。 |
627|  uint32_t frameCount | 帧号。 |
628
629**返回:**
630
631| 类型 | 说明 |
632| -- | -- |
633| int32_t | 错误码。<br>         [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>         [ARKUI_ERROR_CODE_CAPI_INIT_ERROR](capi-native-type-h.md#arkui_errorcode) CAPI初始化错误。<br>         [ARKUI_ERROR_CODE_UI_CONTEXT_INVALID](capi-native-type-h.md#arkui_errorcode) uiContext对象无效。<br>         [ARKUI_ERROR_CODE_CALLBACK_INVALID](capi-native-type-h.md#arkui_errorcode) 回调函数无效。 |
634
635### OH_ArkUI_PostIdleCallback()
636
637```
638int32_t OH_ArkUI_PostIdleCallback(ArkUI_ContextHandle uiContext, void* userData,void (*callback)(uint64_t nanoTimeLeft, uint32_t frameCount, void* userData))
639```
640
641**描述:**
642
643
644注册一个回调函数,在下一帧渲染结束后如果距离下一个Vsync信号到来剩余时间大于1ms时,该回调函数将被执行;如果剩余时间小于1ms时,回调函数将被顺延至当某个下一帧的剩余时间大于1ms时再执行。如果当前没有下一帧,将自动请求下一帧。
645
646**起始版本:** 20
647
648
649**参数:**
650
651| 参数项 | 描述 |
652| -- | -- |
653| uiContext | UIContext对象,用以绑定实例。 |
654|  void* userData | 自定义事件参数,当自定义回调函数触发时在回调参数中携带回来。 |
655| callback | 自定义回调函数,会在下一帧事件结束后剩余时间大于1ms时回调执行。 |
656| uint64_t nanoTimeLeft | 下一帧渲染后的剩余时间。 |
657|  uint32_t frameCount | 帧号。 |
658
659**返回:**
660
661| 类型 | 说明 |
662| -- | -- |
663| int32_t (ArkUI_ContextHandle uiContext, void* userData,void (*callback) | 错误码。<br>         [ARKUI_ERROR_CODE_NO_ERROR](capi-native-type-h.md#arkui_errorcode) 成功。<br>         [ARKUI_ERROR_CODE_CAPI_INIT_ERROR](capi-native-type-h.md#arkui_errorcode) CAPI初始化错误。<br>         [ARKUI_ERROR_CODE_UI_CONTEXT_INVALID](capi-native-type-h.md#arkui_errorcode) uiContext对象无效。<br>         [ARKUI_ERROR_CODE_CALLBACK_INVALID](capi-native-type-h.md#arkui_errorcode) 回调函数无效。 |
664
665
666