需要提供napi反调ets的例子

需要提供napi反调ets的例子

HarmonyOS
2024-05-11 14:34:13
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
chenyi1976
方式一: 通过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);
分享
微博
QQ
微信
回复
9天前
相关问题
需要提供曝光时间设置接口
123浏览 • 1回复 待解决
ArkTS文件后缀是否需要全部改成ets
371浏览 • 1回复 待解决
请问大家有没有ArkUI调用相机例子
2531浏览 • 1回复 待解决
ETSets没有input,如何实现输入?
6833浏览 • 2回复 待解决
是否有简洁易用NAPI开发框架
837浏览 • 1回复 待解决
undefined symbol napi_create_threadsafe_function
2338浏览 • 1回复 待解决
为什么禁止缓存napi_env
122浏览 • 1回复 待解决
openharmony napi 异步耗时阻塞jsui刷新
3620浏览 • 1回复 已解决