HarmonyOS NEXT应用开发之NAPI封装ArkTS接口案例_harmonyos napi ...

打印 上一主题 下一主题

主题 1690|帖子 1690|积分 5070

部门应用的主要开发语言为C/C++,但是HarmonyOS的部门接口仅以ArkTS的形式暴露,因此必要将ArkTS的接口封装为Native接口。本例以DocumentViewPicker的Select方法为例,提供了Napi封装ArkTS API的通用方法,本例包含内容如下:

  • Native侧与ArkTS侧的相互调用
  • Native对象转换为ArkTS对象(包括如何在ArkTS侧调用一样寻常形式的Native方法)
  • 线程安全函数的利用
  • 等待线程安全函数的实行结果
  • 多实例环境下,如何在正确的窗口内实行方法
效果图预览


测试说明

  • 点击"JS线程调用"按钮,从native侧js线程拉起picker
  • 点击"Thread线程调用"按钮,从native侧pthread子线程中拉起picker
  • 拉起picker后,单击直接选择单个文件,长按可选择多个文件
  • 本例在拉起picker时设置了maxSelectNumber=3,最多个选择3个文件
集成说明

  • 源码集成
  • 参考aki方式集成
利用说明

  • [建议]在EntryAbility之外调用registryDocumentViewPickerFn方法,避免多实例下的重复注册
  • [必须]给每个UIAbility天生唯一的ID属性,可利用generateAbilityID方法
  • [必须]在UIAbility的onWindowStageCreate中的windowStage.loadContent的回调中调用addUIContext方法
  • [必须]在UIAbility的onWindowStageCreate中的windowStage.loadContent之后调用setTopAbilityID
  • [建议]在UIAbility的onWindowStageDestroy中调用removeUIContext方法
实现思绪


  • native侧必要主动调用ets侧的代码,必要将ets侧代码注入到native侧,并在注册时创建函数的引用及线程安全函数,并生存当火线程(js线程)的id及env供后续调用时利用
ets侧:
  1. etswrapper.registryDocumentViewPickerFn(documentViewPickerSelect, documentViewPickerSave);
复制代码
  1. native侧:
复制代码
  1. NODE_API_CALL(env, napi_create_threadsafe_function(env
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

渣渣兔

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表