中国优质的IT技术网站
专业IT技术创作平台
IT职业在线教育平台
需要提供napi反调ets的例子
微信扫码分享
方式一: 通过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);