Native侧如何获取ArkTS侧Object对象及其成员变量

Native侧如何获取ArkTS侧Object对象及其成员变量

HarmonyOS
2024-03-19 16:34:43
浏览
收藏 0
回答 1
待解决
回答 1
按赞同
/
按时间
chunter

在ArkTS侧定义类,传递类到Native侧调用类函数。详情见示例代码。

ArkTS侧

// index.ets 
import testNapi from 'libentry.so'; 
import { promptAction } from '@kit.ArkUI'; 
 
class A { 
  name:string ='username' 
  onCall() { 
    promptAction.showToast({ 
      message:'Message Info', 
      duration:2000 
    }); 
    console.log("testTag user onCall"); 
  } 
} 
build() { 
... 
  .onClick(() => { 
    testNapi.callFunction(new A()); 
  }) 
}
// index.d.ts 
export const callFunction: (a:object) => void;

Native侧

// 传入实例对象,在C++侧调用对象中的函数 
#include "napi/native_api.h" 
static napi_value CallFunction(napi_env env, napi_callback_info info) { 
    // 获取实例对象 
    size_t argc = 1; 
    napi_value args[1] = {nullptr}; 
    napi_get_cb_info(env, info, &argc, args, NULL, NULL); 
    // 获取对象的方法 
    napi_value onCall; 
    napi_get_named_property(env, args[0], "onCall", &onCall); 
    // 调用对象中的函数 
    napi_value res; 
    napi_call_function(env, args[0], onCall, 0, nullptr, &res); 
    return onCall; 
} 
EXTERN_C_START 
static napi_value Init(napi_env env, napi_value exports) { 
    napi_property_descriptor desc[] = { 
        {"callFunction", nullptr, CallFunction, nullptr, nullptr, nullptr, napi_default, nullptr}}; 
    napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc); 
    return exports; 
} 
...
分享
微博
QQ
微信
回复
2024-03-20 00:22:01
相关问题
如何Native释放ArkTS对象
280浏览 • 1回复 待解决
如何Native构建一个ArkTS对象
243浏览 • 1回复 待解决
ArkTSNative如何进行map数据交互
256浏览 • 1回复 待解决
如何Native获取APP版本信息
238浏览 • 1回复 待解决
Native如何打印char指针
219浏览 • 1回复 待解决
Native如何获取可操作的文件目录
185浏览 • 1回复 待解决
Native如何使用hilog打印出日志信息
202浏览 • 1回复 待解决
Native如何引入头文件deviceinfo.h
236浏览 • 1回复 待解决
Native创建线程是否有限制
256浏览 • 1回复 待解决
Native如何集成三方SO库
244浏览 • 1回复 待解决
ArkTs怎么传递对象或者类给Native
305浏览 • 1回复 待解决