需要提供napi反调ets的例子

需要提供napi反调ets的例子

HarmonyOS
2024-05-11 14:34:13
浏览
收藏 0
回答 1
回答 1
按赞同
/
按时间
人提唱盘
方式一: 通过napi_load_module 可以调用系统 arkts 的 api 
例如通过 @ohos.batteryInfo 获取手机电量 
 
static napi_value testLoadModule(napi_env env, napi_callback_info info) { 
  const char moduleName[] = “@ohos.batteryInfo”; 
  const char funcName[] = “batterySOC”; 
  napi_value systemModule; 
  // 通过systemModuleName获取对应系统库模块的导出对象 
  napi_load_module(env, moduleName, &systemModule); 
 
  // 获取系统库中的"batterySOC"方法 
  napi_value output = nullptr; 
  napi_get_named_property(env, systemModule, funcName, &output); 
 
  return output; 
} 
方式二:native 侧通过接收 arkts 传入的参数来调用: 
// 传入实例对象,在C++侧调用对象中的函数 
static napi_value CallFunction(napi_env env, napi_callback_info info) 
{ 
  // 获取实例对象 
  size_t argc = 1; 
  napi_value args = nullptr; 
  napi_get_cb_info(env, info, &argc, &args, NULL, NULL); 
 
  // 获取对象的方法 
  napi_value onCall; 
  napi_status status = napi_get_named_property(env, args, “onCall”, &onCall); 
  if (status != napi_ok) 
    return onCall; 
  napi_value return_val; 
 
  // 调用对象中的函数 
  status = napi_call_function(env, args, onCall, 0, NULL, &return_val); 
  return onCall; 
} 
 
arkts 侧: 
export default class User { 
  onCall() { 
    console.log(“testTag user onCall”) 
  } 
} 
 
arkts 侧调用如下 
let user:User = new User(); 
// 调用User的对象方法 
sync_library.CallFunction(user);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.
  • 10.
  • 11.
  • 12.
  • 13.
  • 14.
  • 15.
  • 16.
  • 17.
  • 18.
  • 19.
  • 20.
  • 21.
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
  • 41.
  • 42.
  • 43.
  • 44.
  • 45.
  • 46.
  • 47.
  • 48.
分享
微博
QQ
微信
回复
2024-05-12 20:57:25
相关问题
HarmonyOS 希望提供napi音频采集demo
912浏览 • 1回复 待解决
ArkTS文件后缀是否需要全部改成ets
2730浏览 • 1回复 待解决
ets与ts需要如何做好分层
1524浏览 • 0回复 待解决
HarmonyOS 需要提供手机openssl库sdk
1440浏览 • 1回复 待解决
需要提供曝光时间设置接口
2300浏览 • 1回复 待解决
c++处理promise例子
592浏览 • 1回复 待解决
HarmonyOS OH_Audio 需要提供 mute 方法
1237浏览 • 1回复 待解决
需要提供c++到js通信demo
1377浏览 • 1回复 待解决
HarmonyOS 有没有编译openssl例子
702浏览 • 1回复 待解决
HarmonyOS 有没有List分页加载例子
821浏览 • 1回复 待解决
HarmonyOS 是否有rsa加解密例子
600浏览 • 1回复 待解决
HarmonyOS rcp模块使用例子
596浏览 • 1回复 待解决
HarmonyOS 音频重新编码完整例子
839浏览 • 1回复 待解决